簡體   English   中英

如何將 PySpark dataframe 寫入 DynamoDB 表?

[英]How to write PySpark dataframe to DynamoDB table?

如何將 PySpark dataframe 寫入 DynamoDB 表? 沒有找到太多關於此的信息。 根據我的要求,我必須將 PySpark dataframe 寫入 Dynamo 數據庫表。 總的來說,我需要從我的 PySpark 代碼讀取/寫入發電機。

提前致謝。

Ram,沒有辦法直接從 pyspark 做到這一點。 如果您正在運行管道軟件,則可以通過一系列步驟來完成。 這是如何做到的:

  1. 創建一個臨時配置單元表,如

    CREATE TABLE TEMP( column1 type, column2 type...) STORED AS ORC;

  2. 運行您的 pySpark 作業並將您的數據寫入其中

    dataframe.createOrReplaceTempView("df") spark.sql("INSERT OVERWRITE TABLE temp SELECT * FROM df")

  3. 創建 dynamo 連接器表

    CREATE TABLE TEMPTODYNAMO( column1 type, column2 type...) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "temp-to-dynamo", "dynamodb.column.mapping" = "column1:column1,column2:column2...";

  4. 用您的臨時表覆蓋該表

    INSERT OVERWRITE TABLE TEMPTODYNAMO SELECT * FROM TEMP;

更多信息: https : //docs.aws.amazon.com/emr/latest/ReleaseGuide/EMR_Hive_Commands.html

您可以使用spark-dynamodb

從他們的回購:

# Load a DataFrame from a Dynamo table. Only incurs the cost of a single scan for schema inference.
dynamoDf = spark.read.option("tableName", "SomeTableName") \
                     .format("dynamodb") \
                     .load() # <-- DataFrame of Row objects with inferred schema.

# Scan the table for the first 100 items (the order is arbitrary) and print them.
dynamoDf.show(100)

# write to some other table overwriting existing item with same keys
dynamoDf.write.option("tableName", "SomeOtherTable") \
              .format("dynamodb") \
              .save()

此 AWS 博客解釋了如何使用 AWS Glue 創建唯一鍵、分區和將 S3 數據 (csv) 寫入 DynamoDB 表。

realtor.com® 如何最大限度地將數據從 Amazon S3 上傳到 Amazon DynamoDB

我們將 pyspark output 保存到 S3 上的 parquet,然后使用 lambda 中的 awswrangler 層將 parquet 數據讀取到 pandas 幀和 wrangler.dynamodb.put_df 將整個 dataframe 表寫入 dy。 使用 lambda 並發和 s3 事件觸發器進行相當不錯的擴展

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM