日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

查詢Delta表數據

在E-MapReduce中通過Spark創建的Delta表將自動同步到Hive元數據,您可以像使用其他表一樣查詢Delta表。您還可以通過使用Hive創建外表的方式來查詢Delta表。本文為您介紹如何通過Spark創建表和Hive創建外表的方式,在Hive、Presto和Trino中查詢Delta表的數據。

背景信息

  • Delta表的DDL和DML等操作只能在Spark中執行。您可以通過Hive、Presto和Trino引擎查詢Delta表數據,詳情請參見通過Spark創建表查詢Delta表

  • E-MapReduce也支持對已經存在的Delta數據,通過創建Hive外表來查詢數據,詳情請參見創建Hive外表

使用限制

本文適用于EMR-3.37.0及后續版本,EMR-5.3.0及后續版本以及EMR-4.10.0版本。

通過Spark創建表查詢Delta表

  1. 進入Spark命令行。
    1. 使用SSH方式登錄到集群主節點,詳情請參見登錄集群
    2. 執行以下命令,進入Spark命令行。
      spark-sql
  2. 在Spark中創建并查詢表數據。
    1. 執行以下命令,在Spark中創建Delta表。
      create table delta_table (id int) using delta location "/tmp/delta_table";
    2. 執行以下命令,向表中插入數據。
      insert into delta_table values 0,1,2,3,4;
    3. 執行以下命令,查看表數據。
      select * from delta_table;
      返回包含如下的信息。
      2
      3
      4
      0
      1
      Time taken: 1.847 seconds, Fetched 5 row(s)
  3. 查詢Delta表數據。

    通過Hive查詢Delta表數據

    重要
    • EMR 3.x系列的EMR-3.37.0及后續版本,需要添加參數,您可以在EMR控制臺添加,也可以在運行命令時設置。控制臺添加參數時,在Hive服務的配置頁面的hive-site.xml中,如果使用的是Hive on MR,則添加參數名為hive.input.format,參數值為io.delta.hive.HiveInputFormat的配置項。如果使用的是Hive on Tez,則添加參數名為hive.tez.input.format,參數值為io.delta.hive.HiveInputFormat的配置項。添加操作請參見添加組件參數

    • 如果需要向Delta表中添加字段(使用ADD COLUMN),為了避免Hive查詢數據異常的情況,建議將新增字段追加到分區字段之前。更多詳細信息,請查看ALTER TABLE

    1. 執行以下命令,進入Hive命令行。

      hive
    2. 執行以下命令,在Hive中查看Delta表的數據。

      select * from delta_table;

      返回如下信息。

      2
      3
      4
      0
      1
      Time taken: 2.937 seconds, Fetched: 5 row(s)
      說明

      查看數據與在Spark中插入的數據一致,說明Hive已經成功訪問了Delta表的數據。

    通過Presto查詢Delta表數據

    1. 執行以下命令,進入Presto命令行。

      presto --server master-1-1:8889 --catalog delta --schema default --user hadoop

      命令中的參數說明如下:

      • --server master-1-1:8889:指定Presto服務器的地址和端口號。

      • --catalog delta:指定要連接的數據源的名稱。

      • --schema default:指定要使用的數據庫的名稱。本文示例中,使用的是默認的數據庫。您可以根據需要修改此參數。

      • --user hadoop:指定用于身份驗證的用戶名。

    2. 執行以下命令,在Presto中查看Delta表的數據。

      select * from delta_table;

      返回如下信息。

       id
      ----
        2
        3
        4
        0
        1
      (5 rows)
      說明

      查看數據與在Spark中插入的數據一致,說明Presto已經成功訪問了Delta表的數據。

    通過Trino查詢Delta表數據

    1. 執行以下命令,進入Trino命令行。

      trino --server master-1-1:9090 --catalog delta --schema default --user hadoop

      命令中的參數說明如下:

      • --server master-1-1:9090:指定Trino服務器的地址和端口號。

      • --catalog delta:指定要連接的數據源的名稱。

      • --schema default:指定要使用的數據庫的名稱。本文示例中,使用的是默認的數據庫。您可以根據需要修改此參數。

      • --user hadoop:指定用于身份驗證的用戶名。

    2. 執行以下命令,在Trino中查看Delta表的數據。

      select * from delta_table;

      返回如下信息。

       id
      ----
        2
        3
        4
        0
        1
      (5 rows)
      說明

      查看數據與在Spark中插入的數據一致,說明Trino已經成功訪問了Delta表的數據。

創建Hive外表

E-MapReduce也支持對已存在的Delta數據創建Hive外表來查詢。示例如下。

CREATE EXTERNAL TABLE delta_tbl (name string, age int, city string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES("path" = "/path/to/delta")
STORED AS INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
LOCATION '/path/to/delta'
TBLPROPERTIES("spark.sql.sources.provider" = "delta");

如果您創建的集群是EMR 3.x系列的EMR-3.37.0及后續版本,您也可以通過Hive StorageHandler的方式創建外表。示例如下。

CREATE EXTERNAL TABLE delta_tbl123 (name string, age int, city string)
STORED BY 'io.delta.hive.DeltaStorageHandler'
WITH SERDEPROPERTIES("path" = "/path/to/delta")
LOCATION '/path/to/delta'
TBLPROPERTIES("spark.sql.sources.provider" = "delta");
說明

建表語句中SERDEPROPERTIES設置path,以及TBLPROPERTIES中設置spark.sql.sources.provider是為了兼容后續通過SparkSQL的方式查詢。通過該方式創建Delta外表后,在Hive、Presto和Trino中查詢表的方式,與通過Spark創建表訪問查詢Delta表方式相同,詳情請參見步驟3