![](/img/trans.png)
[英]Read and write avro files by inferring schema using Python SDK in Google Cloud Dataflow - Apache Beam
[英]Read multiline JSON using apache beam / google cloud dataflow
我正在嘗試讀取管道中的 JSON 文件(多行),但beam.io.ReadFromText(somefile.json
讀取一行。
我正在嘗試將文件內容讀取為 JSON,以便我可以在每個類別上應用map
以下載相關產品文件。
這是我的JSON
文件(productindex.json) 的樣子:
{
"productcategories" : {
"category1" : {
"productfile" : "http://products.somestore.com/category1/products.json"
},
"category2" : {
"productfile" : "http://products.somestore.com/category2/products.json"
},
"category3" : {
"productfile" : "http://products.somestore.com/category3/products.json"
},
"category4" : {
"productfile" : "http://products.somestore.com/category4/products.json"
}
}
這是我的管道開頭的樣子:
with beam.Pipeline(options=pipeline_options) as p:
rows = (
p | beam.io.ReadFromText(
"http://products.somestore.com/allproducts/productindex.json")
)
我正在使用apache-beam[gcp]
模塊。
我如何實現這一目標?
Apache Beam / Cloud Dataflow 不直接支持讀取多行 Json 數據。
主要原因是這很難並行執行。 Beam 如何知道每條記錄的結束位置? 這對於單個閱讀器來說很容易,但對於並行閱讀器來說非常復雜。
我可以推薦的最佳解決方案是在 Beam / Dataflow 處理之前將您的 Json 數據轉換為換行符分隔的 Json (NDJSON)。 這可能就像更改上游任務寫入的輸出格式一樣簡單,也可能需要預處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.