スキルOfficialdevelopment
🐝aidp-hive
- ソース
- GitHub で見る ↗
説明
AIDPノートブックから、AIDP の `aidataplatform` Spark フォーマットハンドラーを介して Apache Hive の読み書きを行います。 次のような場合に使用: ユーザーが Hive、HiveServer2、HS2、HCatalog に言及している場合、または Hive メタストアのホスト/ポートを持っている場合。 認証方式: ホスト/ポート + ユーザー名/パスワード。 アクセス権限: 読み取り・書き込み。
原文を表示
Read or write Apache Hive from an AIDP notebook via the AIDP `aidataplatform` Spark format handler. Use when the user mentions Hive, HiveServer2, HS2, HCatalog, or has a Hive metastore host/port. Auth is host/port + user/password. Read-write.
ユースケース
- ✓Hive、HiveServer2、HS2に接続するとき
- ✓HCatalogを使用するとき
- ✓Hiveメタストアのホスト/ポート情報がある場合
- ✓Apache Hiveの読み書きを行うとき
本文(日本語訳)
aidp-hive — AIDP aidataplatform 経由の Apache Hive
次のような場合に使用
- ユーザーが AIDP ノートブックから Hive テーブルの読み取りまたは書き込みを行いたい場合。
- ユーザーが次のキーワードを口にした場合:「Hive」「HiveServer2」「HS2」「HCatalog」「Hive メタストア」、または Hive のデータベース名・テーブル名。
次のような場合には使用しない
- Kerberos 認証付きの Oracle Big Data Service (BDS) HiveServer2 に Spark JDBC 経由で接続する場合 → カスタム skill を使用してください(
aidp-bds-hiveは v0.4 スコープから削除済み。Kerberos が必要なお客様がいる場合は再検討してください)。 現在のaidp-hiveskill は、aidataplatformフォーマットハンドラを介した非 Kerberos Hive(LDAP / SASL-PLAIN / NoAuth)に対応しています。 - データが
oci://上に存在する Iceberg-on-Hive スタイルのメタデータを扱う場合 →aidp-icebergを使用してください。
AIDP ノートブックの前提条件
sys.pathにヘルパーが存在すること(事前にaidp-connectors-bootstrapを実行してください)。- ネットワーク: クラスターが設定済みポート(通常 10000)で HS2 ホストに到達できること。 Hive がお客様の VCN 内にある場合は、VCN ピアリングが設定されていることを確認してください — クラスター Pod の CIDR からユーザー VCN へのルートは暗黙的には存在しません。
- 環境変数 / OCI Vault シークレット:
HIVE_HOST(HiveServer2 のホスト名)HIVE_PORT(通常10000)HIVE_USER、HIVE_PASSWORDHIVE_SCHEMA(Hive データベース名)HIVE_TABLE(Hive テーブル名)
読み取り
import os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
schema=os.environ["HIVE_SCHEMA"],
table=os.environ["HIVE_TABLE"],
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
書き込み
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
schema=os.environ["HIVE_SCHEMA"],
table=os.environ["HIVE_TARGET_TABLE"],
extra={"write.mode": "APPEND"}, # CREATE | APPEND | OVERWRITE
)
df.write.format(AIDP_FORMAT).options(**opts).save()
プッシュダウン SQL
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
extra={
"pushdown.sql": (
"SELECT customer_id, SUM(amount) AS total "
"FROM sales_db.transactions "
"WHERE event_dt >= '2025-01-01' "
"GROUP BY customer_id"
),
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
注意事項
database.nameオプションは存在しません — Hive はデータベースの識別にschemaを直接使用します(例:default、sales_db)。database_nameは渡さないでください。- ネットワーク到達性が最も多い障害原因です。 クラスターから次のようにスモークテストを行ってください:
socket.create_connection((host, port), timeout=8)。 これが失敗する場合は認証の問題ではなくネットワークの問題です — VCN ピアリング / NSG / DNS の順で確認してください。 - この skill では Kerberos は使用できません。 このコネクタハンドラは LDAP / SASL-PLAIN / NoAuth を使用します。Hive クラスターが Kerberos のみを受け付ける場合は、keytab を使用した Spark ネイティブの JDBC パスが必要です(v0.5 のスコープ外 — Issue を起票してください)。
- 書き込みモード —
CREATE(既存の場合はエラー)、APPEND、OVERWRITE。デフォルトはCREATEです。 - パーティション分割テーブル。 パーティション分割された Hive テーブルへの書き込み時、
OVERWRITEは DataFrame の異なるパーティションキーが触れるすべてのパーティションを上書きします。触れていない既存のパーティションはそのまま保持されます。
参考資料
原文(English)を表示
aidp-hive — Apache Hive via AIDP aidataplatform
When to use
- User wants to read or write a Hive table from an AIDP notebook.
- User mentions: "Hive", "HiveServer2", "HS2", "HCatalog", "Hive metastore", a Hive database/table name.
When NOT to use
- For Oracle Big Data Service (BDS) HiveServer2 with Kerberos auth via Spark JDBC → use a custom skill (we removed
aidp-bds-hivefrom v0.4 scope; revisit if your customer needs Kerberos specifically). The currentaidp-hiveskill covers non-Kerberos Hive (LDAP / SASL-PLAIN / NoAuth) via theaidataplatformformat handler. - For Iceberg-on-Hive-style metadata where data lives on
oci://→aidp-iceberg.
Prerequisites in the AIDP notebook
- Helpers on
sys.path(runaidp-connectors-bootstrapfirst). - Network: cluster must reach the HS2 host on the configured port (typically 10000). If your Hive lives in a customer VCN, ensure VCN peering is in place — the cluster pod CIDR has no implicit route to user VCNs.
- Env vars / OCI Vault secrets:
HIVE_HOST(HiveServer2 hostname)HIVE_PORT(typically10000)HIVE_USER,HIVE_PASSWORDHIVE_SCHEMA(Hive database name)HIVE_TABLE(Hive table name)
Read
import os
from oracle_ai_data_platform_connectors.aidataplatform import (
AIDP_FORMAT, aidataplatform_options,
)
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
schema=os.environ["HIVE_SCHEMA"],
table=os.environ["HIVE_TABLE"],
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Write
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
schema=os.environ["HIVE_SCHEMA"],
table=os.environ["HIVE_TARGET_TABLE"],
extra={"write.mode": "APPEND"}, # CREATE | APPEND | OVERWRITE
)
df.write.format(AIDP_FORMAT).options(**opts).save()
Pushdown SQL
opts = aidataplatform_options(
type="HIVE",
host=os.environ["HIVE_HOST"],
port=int(os.environ.get("HIVE_PORT", "10000")),
user=os.environ["HIVE_USER"],
password=os.environ["HIVE_PASSWORD"],
extra={
"pushdown.sql": (
"SELECT customer_id, SUM(amount) AS total "
"FROM sales_db.transactions "
"WHERE event_dt >= '2025-01-01' "
"GROUP BY customer_id"
),
},
)
df = spark.read.format(AIDP_FORMAT).options(**opts).load()
df.show(10)
Gotchas
- No
database.nameoption — Hive usesschemadirectly to identify the Hive database (e.g.default,sales_db). Don't passdatabase_name. - Network reachability is the most common failure. Smoke-test from the cluster:
socket.create_connection((host, port), timeout=8). If this fails, it's a network problem, not an auth problem — VCN peering / NSG / DNS, in that order. - No Kerberos on this skill. This connector handler uses LDAP / SASL-PLAIN / NoAuth. If your Hive cluster only accepts Kerberos, you need a Spark-native JDBC path with a keytab (out of scope for v0.5 — file an issue).
- Write modes —
CREATE(fail if exists),APPEND,OVERWRITE. Default isCREATE. - Partitioned tables. When writing to a partitioned Hive table,
OVERWRITEoverwrites all partitions touched by the DataFrame's distinct partition keys; existing partitions not touched are preserved.
References
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。