[iceberg]1-环境

环境

  • hadoop客户端
  • hivemetastore
  • spark包

1.hadoop环境

  • 如果使用hdfs,则需要hadoop环境;如果仅使用s3,则需要hadoop客户端即可。

2.metastore环境

  • 非必须。如果没有metastore环境,iceberg仍然可以选择hadoop环境。

3.spark的配置

  • 关于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的地址。
<configuration xmlns:xi="http://www.w3.org/2001/XInclude">
  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://xxx:9083</value>
  </property>
</configuration>

运行

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flink iceberg环境搭建需要以下几个步骤: 1. 安装Hadoop 首先需要安装Hadoop,并且配置好Hadoop的环境变量和相关配置文件,确保Hadoop能够正常使用。可以参考Hadoop官方文档进行安装和配置。 2. 下载Iceberg jar包 Iceberg是一个开源的数据表格管理库,可以在Hadoop上管理海量数据表。可以在Maven仓库中下载最新的Iceberg jar包,或者从GitHub上下载源码进行编译打包。 3. 配置Flink环境 在Flink环境中,需要配置Iceberg的相关依赖和参数。可以在Flink配置文件中添加以下内容: ``` flink.executor.extraClasspath: /path/to/iceberg.jar flink.sql.catalog.iceberg.type: iceberg flink.sql.catalog.iceberg.factory-class: org.apache.iceberg.flink.IcebergCatalogFactory flink.sql.catalog.iceberg.catalog-type: hadoop flink.sql.catalog.iceberg.warehouse: hdfs://<namenode-host>:<namenode-port>/<warehouse-dir> ``` 其中,`/path/to/iceberg.jar`为Iceberg jar包的路径,`<namenode-host>`和`<namenode-port>`为Hadoop的NameNode地址和端口号,`<warehouse-dir>`为Iceberg表格的存储目录。 4. 创建Iceberg表格 在Flink中,可以使用SQL语句创建Iceberg表格。例如: ``` CREATE TABLE my_table ( id INT, name STRING, age INT ) PARTITIONED BY (gender STRING) WITH ( 'type'='iceberg', 'catalog'='hadoop', 'catalog-namespace'='my_namespace', 'warehouse'='hdfs://<namenode-host>:<namenode-port>/<warehouse-dir>' ) ``` 其中,`my_table`为表格名称,`id`、`name`、`age`和`gender`为表格字段,`catalog-namespace`为Iceberg表格的命名空间。 5. 插入数据 使用Flink的DataStream或Table API插入数据到Iceberg表格中。例如: ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream<MyData> dataStream = env.fromElements( new MyData(1, "Alice", 20, "female"), new MyData(2, "Bob", 30, "male") ); Table table = ... // get the Iceberg table table.executeInsert(dataStream); ``` 其中,`MyData`为数据类型,`table`为Iceberg表格对象。 通过以上步骤,就可以在Flink中搭建Iceberg环境,并且使用Iceberg管理海量数据表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值