すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:バッチ読み取りと書き込み

最終更新日:Jan 11, 2025

このトピックでは、Delta Lake を使用してバッチ読み取りと書き込みを実行する方法について説明します。

テーブルの作成とデータの書き込み

  • Scala
    // パーティション化されていないテーブルを作成し、データを書き込みます。
    data.write.format("delta").save("/tmp/delta_table")
    // パーティション化されたテーブルを作成し、データを書き込みます。
    data.write.format("delta").partitionedBy("date").save("/tmp/delta_table")
  • SQL
    // パーティション化されていないテーブルを作成し、データを書き込みます。
    CREATE TABLE delta_table (id INT) USING delta LOCATION "/tmp/delta_table";
    INSERT INTO delta_table VALUES 0,1,2,3,4;
    // パーティション化されたテーブルを作成し、データを書き込みます。
    CREATE TABLE delta_table (
    
    
    id INT, date STRING) USING delta PARTITIONED BY (date) LOCATION "/tmp/delta_table";
    INSERT INTO delta_table PARTITION (date='2019-11-11') VALUES 0,1,2,3,4;
    // 動的パーティションにデータを書き込みます。
    INSERT INTO delta_table PARTITION (date) VALUES (0,'2019-11-01'),(1,'2019-11-02'),(2,'2019-11-05'),(3,'2019-11-08'),(4,'2019-11-11');

テーブルへのデータの追加書き込み

  • Scala
    // パーティション化されていないテーブルにデータを追加書き込みします。
    data.write.format("delta").mode("append").save("/tmp/delta_table")
    // パーティション化されたテーブルにデータを追加書き込みします。
    data.write.format("delta").mode("append").save("/tmp/delta_table")
  • SQL
    // パーティション化されていないテーブルにデータを追加書き込みします。
    INSERT INTO delta_table VALUES 0,1,2,3,4;
    // パーティション化されたテーブルにデータを追加書き込みします。
    INSERT INTO delta_table PARTITION (date='2019-11-11') VALUES 0,1,2,3,4;
    // 動的パーティションにデータを追加書き込みます。
    INSERT INTO delta_table PARTITION (date) VALUES (0,'2019-11-01'),(1,'2019-11-02'),(2,'2019-11-05'),(3,'2019-11-08'),(4,'2019-11-11');

テーブルへのデータの上書き

  • Scala
    // パーティション化されていないテーブルのデータを上書きします。
    data.write.format("delta").mode("overwrite").save("/tmp/delta_table")
    // パーティション化されたテーブルのデータを上書きします。
    data.write.format("delta").mode("overwrite").option("replaceWhere", "date >= '2019-11-01' AND date <= '2019-11-11'").save("/tmp/delta_table")
  • SQL
    INSERT OVERWRITE TABLE delta_table VALUES 0,1,2,3,4;
    // パーティション化されたテーブルのデータを上書きします。
    INSERT OVERWRITE delta_table PARTITION (date='2019-11-11') VALUES 0,1,2,3,4;
    // 動的パーティションのデータを上書きします。
    INSERT OVERWRITE delta_table PARTITION (date) VALUES (0,'2019-11-01'),(1,'2019-11-02'),(2,'2019-11-05'),(3,'2019-11-08'),(4,'2019-11-11');

テーブルの読み取り

  • Scala
    spark.read.format("delta").load("/tmp/delta_table")
  • SQL
    SELECT * FROM delta_table;

テーブルの以前のバージョンの読み取り

  • Scala
    df1 = spark.read.format("delta").option("timestampAsOf", timestamp_string).load("/tmp/delta_table")
    df2 = spark.read.format("delta").option("versionAsOf", version).load("/tmp/delta_table")
  • SQL

    この操作は SQL ではサポートされていません。