iceberg安装部署

部署hadoop,hive

        之前已正确部署了hadoop这里就不赘述了. 部署的hadoop 和 hive 版本均为 3.1.3

部署iceberg

        准备jar包

        去https://mvnrepository.com/ 分别搜索 iceberg-hive-runtime 和 libfb303-0.9.3 下载 iceberg-hive-runtime-1.2.0.jar 和 libfb303-0.9.3.jar, 将两个jar文件放到hive安装目录的auxlib(需要新建)目录下

        配置hive-site.xml

        配置内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://ubuntu02:3306/metastore?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.cj.jdbc.Driver</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>123456</value>
</property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/hadoop/hive/warehouse</value>
    </property>

    <!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>ubuntu02</value>
    </property>

    <!-- 指定hiveserver2连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>

    <property>
        <name>hive.server2.webui.host</name>
        <value>ubuntu02</value>
    <description>The host address the HiveServer2 WebUI will listen on</description>
   </property>

  <property>
    <name>hive.server2.webui.port</name>
    <value>10002</value>
    <description>The port the HiveServer2 WebUI will listen on. This can beset to 0 or a negative integer to disable the web UI</description>
  </property>

  <property>
    <name>iceberg.engine.hive.enabled</name>
    <value>true</value>
  </property>

  <property>
    <name>hive.metastore.uris</name>
    <value>thrift://ubuntu02:9083</value>
</property>

   <property>
	   <name>hive.aux.jars.path</name>
	   <value>/opt/moudle/hive/auxlib</value>
   </property>




</configuration>

验证

创建iceberg表

使用beeline登录hive

先使用beeline命令进入交互界面

再使用命令登录,也可以直接使用命令登录hive

!connect jdbc:hive2://ubuntu02:10000

新建一个iceberg表,语句如下

create table iceberg_test(i int, name string) STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler';

数据写入iceberg表

insert into iceberg_test values(1,'student');

查询写入的数据

select * from iceberg_test;

遇到的问题

Hive集成Iceberg碰到的问题_hive集成icebert-优快云博客

不要随便配置写入的数据格式,不然数据写入iceberg有异常

通过Spark部署Iceberg 1.4.2和MinIO可按以下步骤进行: ### 1. 搭建MinIO环境 使用Docker Compose搭建MinIO环境,创建一个`docker-compose.yml`文件,内容如下: ```yaml version: '3' services: minio: image: minio/minio ports: - "9000:9000" volumes: - minio-data:/data command: server /data volumes: minio-data: ``` 在终端中执行以下命令启动MinIO容器: ```bash docker-compose up -d ``` ### 2. 配置Spark以使用MinIO 在Spark中配置使用MinIO,需要设置相关的Hadoop配置属性。可以在`spark-defaults.conf`文件中添加以下配置: ```plaintext spark.hadoop.fs.s3a.aws.credentials.provider com.amazonaws.auth.InstanceProfileCredentialsProvider,org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,com.amazonaws.auth.EnvironmentVariableCredentialsProvider spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.endpoint http://127.0.0.1:9000 spark.hadoop.fs.s3a.access.key minioadmin spark.hadoop.fs.s3a.secret.key minioadmin spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.fast.upload true ``` ### 3. 配置Iceberg依赖 确保Spark可以使用Iceberg 1.4.2,需要在Spark中添加Iceberg的相关依赖。可以通过在启动Spark时指定依赖,例如: ```bash spark-shell --packages org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:1.4.2 ``` ### 4. 创建Iceberg表 在Spark中创建Iceberg表并使用MinIO作为存储。以下是一个示例代码: ```scala import org.apache.spark.sql.SparkSession import org.apache.iceberg.catalog.TableIdentifier import org.apache.iceberg.hadoop.HadoopCatalog import org.apache.hadoop.conf.Configuration // 创建SparkSession val spark = SparkSession.builder() .appName("IcebergMinIOExample") .master("local[*]") .getOrCreate() // 配置Hadoop val conf = new Configuration() conf.set("fs.s3a.aws.credentials.provider", "com.amazonaws.auth.InstanceProfileCredentialsProvider,org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,com.amazonaws.auth.EnvironmentVariableCredentialsProvider") conf.set("fs.s3a.connection.ssl.enabled", "false") conf.set("fs.s3a.endpoint", "http://127.0.0.1:9000") conf.set("fs.s3a.access.key", "minioadmin") conf.set("fs.s3a.secret.key", "minioadmin") conf.set("fs.s3a.path.style.access", "true") conf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") conf.set("fs.s3a.fast.upload", "true") val warehousePath = "s3a://test/" val catalog = new HadoopCatalog(conf, warehousePath) val tableIdentifier = TableIdentifier.of("iceberg_db", "table_ice") // 创建表 spark.sql(s"CREATE TABLE $tableIdentifier (id INT, name STRING) USING iceberg") ``` ### 5. 验证部署 可以通过插入和查询数据来验证Iceberg 1.4.2和MinIO是否成功部署。 ```scala // 插入数据 spark.sql(s"INSERT INTO $tableIdentifier VALUES (1, 'Alice'), (2, 'Bob')") // 查询数据 val df = spark.sql(s"SELECT * FROM $tableIdentifier") df.show() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值