- hadoop客户端
- hivemetastore
- spark包
- 如果使用hdfs,则需要hadoop环境;如果仅使用s3,则需要hadoop客户端即可。
- 非必须。如果没有metastore环境,iceberg仍然可以选择hadoop环境。
- 关于iceberg-runtime包最好也放到jars下。
- 在$SPARK_HOME/conf/spark-env.sh中配置:
HADOOP_HOME=/home/xxx/hadoop-current
HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop/
- 如果使用metastore,需要在$SPARK_HOME/conf/hive-site.xml(新建)中配置metastore的地址。
运行hive.metastore.uris thrift://xxx:9083
debug iceberg:
[hadoop@10 ~]$ spark-sql --master local --driver-java-options "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5060" --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.type=hadoop --conf spark.sql.catalog.spark_catalog.warehouse=hdfs://ns1/user/wanghongbing/db Listening for transport dt_socket at address: 5060扩展Spark Catalyst
使得用户可以在Spark session中自定义自己的parser,analyzer,optimizer以及physical planning stragegy rule。Spark Catalyst扩展点:
SparkSessionExtensions获取自定义规则
SparkSessionExtensions对应每一种自定义规则也都有一个build开头的方法用于获取对应类型的自定义规则,Spark session在初始化的时候,通过这些方法获取自定义规则并传递给parser,analyzer,optimizer以及planner等对象。
- buildOptimizerRules
- buildParser
- buildPlannerStrategies
- buildResolutionRules
- buildPostHocResolutionRules
- buildCheckRules



