[英]Move data from Data Lake Store (JSON file ) to Azure Search using Azure Data Factory
[英]Move JSON Data from DocumentDB (or CosmosDB) to Azure Data Lake
我在 Cosmos DB(以前稱為 Document DB)中有很多 JSON 文件(以百萬計),我想將它移到 Azure Data Lake 中進行冷存儲。
我找到了這個文檔https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.documents.client.documentclient.readdocumentfeedasync?view=azure-dotnet但它沒有任何示例。
我應該如何進行,任何代碼示例都受到高度贊賞。
謝謝。
是的,更改提要可以解決問題。
你有兩個選擇。 第一個(在這種情況下可能是您想要的)是通過 SDK 使用它。
微軟有一個關於如何在此處包含代碼示例的詳細頁面: https : //docs.microsoft.com/en-us/azure/cosmos-db/change-feed#rest-apis
第二個是 Change Feed Library,它允許您始終運行一項服務,監聽更改並根據您的需要處理它們。 有關更改源庫代碼示例的更多詳細信息,請訪問: https : //docs.microsoft.com/en-us/azure/cosmos-db/change-feed#change-feed-processor
(兩個頁面(實際上是相同的只是不同的部分)都包含指向 Microsoft github 存儲庫的鏈接,其中包含代碼示例。)
請記住,您仍然需要按 RU/s 支付使用此費用,但從我看來它相對較低(或至少低於您開始閱讀收藏時支付的費用。)
我建議您使用Azure 數據工廠來實現您的要求。
請參閱此文檔了解如何從 cosmos db 導出 json 文檔以及有關如何將數據導入 ADL 的文檔。
希望對你有幫助。
更新答案:
請參考: Azure Cosmos DB 作為源,您可以在管道中創建query
。
您還可以通過 Spark 讀取更改提要。 以下 python 代碼示例為更改的數據生成按 loaddate 分區的鑲木地板文件。 每天在 Azure Databricks 筆記本中工作:
# Get DB secrets
endpoint = dbutils.preview.secret.get(scope = "cosmosdb", key = "endpoint")
masterkey = dbutils.preview.secret.get(scope = "cosmosdb", key = "masterkey")
# database & collection
database = "<yourdatabase>"
collection = "<yourcollection"
# Configs
dbConfig = {
"Endpoint" : endpoint,
"Masterkey" : masterkey,
"Database" : database,
"Collection" : collection,
"ReadChangeFeed" : "True",
"ChangeFeedQueryName" : database + collection + " ",
"ChangeFeedStartFromTheBeginning" : "False",
"ChangeFeedUseNextToken" : "True",
"RollingChangeFeed" : "False",
"ChangeFeedCheckpointLocation" : "/tmp/changefeedcheckpointlocation",
"SamplingRatio" : "1.0"
}
# Connect via Spark connector to create Spark DataFrame
df = spark.read.format("com.microsoft.azure.cosmosdb.spark").options(**dbConfig).load()
# set partition to current date
import datetime
from pyspark.sql.functions import lit
partition_day= datetime.date.today()
partition_datetime=datetime.datetime.now().isoformat()
# new dataframe with ingest date (=partition key)
df_part= df.withColumn("ingest_date", lit(partition_day))
# write parquet file
df_part.write.partitionBy('ingest_date').mode('append').json('dir')
您還可以使用邏輯應用程序。 可以使用定時器觸發器。 這將是一個無代碼解決方案
優點是您可以在發送到數據湖之前應用任何規則
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.