当前位置: 首页 > news >正文

Iceberg 基本操作和快速入门

安装

Iceberg 是一种适用于大型分析表的高性能工具,通过spark启动并运行iceberg,文章是通过docker来进行安装并测试的

新建一个docker-compose.yml文件

文件内容

version: "3"

services:

  spark-iceberg:

    image: tabulario/spark-iceberg

    container_name: spark-iceberg

    build: spark/

    networks:

      iceberg_net:

    depends_on:

      - rest

      - minio

    volumes:

      - ./warehouse:/home/iceberg/warehouse

      - ./notebooks:/home/iceberg/notebooks/notebooks

    environment:

      - AWS_ACCESS_KEY_ID=admin

      - AWS_SECRET_ACCESS_KEY=password

      - AWS_REGION=us-east-1

    ports:

      - 8888:8888

      - 8080:8080

      - 10000:10000

      - 10001:10001

  rest:

    image: tabulario/iceberg-rest

    container_name: iceberg-rest

    networks:

      iceberg_net:

    ports:

      - 8181:8181

    environment:

      - AWS_ACCESS_KEY_ID=admin

      - AWS_SECRET_ACCESS_KEY=password

      - AWS_REGION=us-east-1

      - CATALOG_WAREHOUSE=s3://warehouse/

      - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO

      - CATALOG_S3_ENDPOINT=http://minio:9000

  minio:

    image: minio/minio

    container_name: minio

    environment:

      - MINIO_ROOT_USER=admin

      - MINIO_ROOT_PASSWORD=password

      - MINIO_DOMAIN=minio

    networks:

      iceberg_net:

        aliases:

          - warehouse.minio

    ports:

      - 9001:9001

      - 9000:9000

    command: ["server", "/data", "--console-address", ":9001"]

  mc:

    depends_on:

      - minio

    image: minio/mc

    container_name: mc

    networks:

      iceberg_net:

    environment:

      - AWS_ACCESS_KEY_ID=admin

      - AWS_SECRET_ACCESS_KEY=password

      - AWS_REGION=us-east-1

    entrypoint: >

      /bin/sh -c "

      until (/usr/bin/mc config host add minio http://minio:9000 admin password) do echo '...waiting...' && sleep 1; done;

      /usr/bin/mc rm -r --force minio/warehouse;

      /usr/bin/mc mb minio/warehouse;

      /usr/bin/mc policy set public minio/warehouse;

      tail -f /dev/null

      "

networks:

  iceberg_net:

通过命令启动 docker 容器

docker-compose up

可以在docker中查到到具体容器

启动spark会话

docker exec -it spark-iceberg spark-sql

还可以通过命令来启动notebook 服务器。 Notebook 服务器将于 http://localhost:8888

docker exec -it spark-iceberg notebook

创建表

CREATE TABLE demo.nyc.taxis

(

  vendor_id bigint,

  trip_id bigint,

  trip_distance float,

  fare_amount double,

  store_and_fwd_flag string

)

PARTITIONED BY (vendor_id);

Iceberg 目录支持所有 SQL DDL 命令,包括:

CREATE TABLE ... PARTITIONED BY

CREATE TABLE ... AS SELECT

ALTER TABLE

DROP TABLE

向表中写入数据

INSERT INTO demo.nyc.taxis

VALUES (1, 1000371, 1.8, 15.32, 'N'), (2, 1000372, 2.5, 22.15, 'N'), (2, 1000373, 0.9, 9.01, 'N'), (1, 1000374, 8.4, 42.13, 'Y');

从表中读取数据

SELECT * FROM demo.nyc.taxis;

这就是iceberg-spark的基本入门说明了,后续会更新一些高级的操作,欢迎大家关注,评论沟通,大家一起学习交流~

相关文章:

  • Linux中的tr命令详解
  • C#进阶-读写Excel常用框架及其使用方式
  • STM32嵌入式编程学习到提高:【5】delay函数
  • 【C++】托管类和托管函数
  • jenkins分布式构建
  • C高级(Day21)
  • XPath基础知识点讲解——用于在XML中查找信息的语言
  • [vulnhub] Jarbas-Jenkins
  • numpy is not available
  • 982. 按位与为零的三元组
  • UI设计师面试整理-工具和技术技能
  • list(二) (list模拟实现)
  • HOJ网站开启https访问 申请免费SSL证书 部署证书详细操作指南
  • CANopen开源库canfestival的移植
  • 深度解析APP软件开发:构建卷轴式分销系统的实践探索
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • express如何解决request entity too large问题
  • git 常用命令
  • GitUp, 你不可错过的秀外慧中的git工具
  • Git学习与使用心得(1)—— 初始化
  • isset在php5.6-和php7.0+的一些差异
  • Just for fun——迅速写完快速排序
  • Logstash 参考指南(目录)
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • php的插入排序,通过双层for循环
  • python学习笔记 - ThreadLocal
  • quasar-framework cnodejs社区
  • SpiderData 2019年2月25日 DApp数据排行榜
  • spring cloud gateway 源码解析(4)跨域问题处理
  • spring学习第二天
  • swift基础之_对象 实例方法 对象方法。
  • vue-router 实现分析
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 给新手的新浪微博 SDK 集成教程【一】
  • 前端面试题总结
  • 区块链技术特点之去中心化特性
  • 微信支付JSAPI,实测!终极方案
  • 携程小程序初体验
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 最近的计划
  • No resource identifier found for attribute,RxJava之zip操作符
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • ​2021半年盘点,不想你错过的重磅新书
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Linux(Source Insight安装及工程建立)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #Z2294. 打印树的直径
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.9) MSP (version 4.2)
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (分布式缓存)Redis哨兵