[英]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.