你好,
我想知道如果我能得到你的建議。
我們想創建一個青銅三角洲表使用廣州JSON數據存儲在S3中但每次我們嚐試讀和寫它集群CPU峰值100%。我們沒有做任何轉換,隻是閱讀從S3,創建一個列as_of_date和寫作在三角洲S3。
目前需要超過1小時讀和寫20 gb的廣州JSON S3使用服務器122 gb的內存和16個核心是無效的。
當我們做ETL數據也在小文件6.7 mb-10mb寫道。
我們已經試過的東西:
source_path = (s3: / /測試數據/源/ 2022/06/03 / *’。形式at(year, month, day)) test_data = spark.read.json(source_path).withColumn("as_of_date", col('metadata.timestamp').cast('date')) test_data.createOrReplaceTempView('test_data') test_data.write.format('delta') \ .partitionBy('as_of_date') \ .option("mergeSchema", "true") \ .option("path",'s3://test-data-bronze/').mode("append") \ .saveAsTable('test_data.bronze')
隻是一個快速檢查。你和dbfs試試這些路徑:/路徑而不是這些S3路徑?繼續上傳的方式之一,但試著改變這些的dbfs: /路徑。也許dbfs: /用戶/ your_user_email / ?
write_path = ' s3: / / test-data-bronze / not_optimized schema_location = ' s3: / / test-autoloader / not_optimized / checkpoint_path =“s3: / / test-autoloader / not_optimized /”
upload_path =“/ mnt /測試數據/日曆”schema_location =“用戶/ your_email_address / project_directory_name / _checkpoints”checkpoint_path =“用戶/ your_email_address / project_directory_name / _checkpoints”#設置流開始讀取輸入文件從bronze_df = spark.readStream.format (cloudFiles) \ .option (“cloudFiles。schemaLocation ', schema_location) \ .option (“cloudFiles。maxFilesPerTrigger”, 16) \ .option (“cloudFiles。inferColumnTypes”、“真實”)\ .option (cloudFiles。格式,json) \ .option (cloudFiles。backfillInterval”,“一天”)\ .load (upload_path) #開始流。bronze_df。writeStream \ .format(“δ”).option (checkpointLocation, checkpoint_path) \ .table (“user_data_bronze_compact”)
這是我的想法。假設你安裝S3 bucket要加載,它將在dbfs文件係統下mnt正如你看到上麵這段代碼中。然後你保存數據和模式在dbfs文件係統——也許在用戶。
寫,我拿出所有的其他東西你在那裏我們將處理最低隻是把數據轉換成三角洲。然後你可以做鑄造的時間戳。我強烈建議你不要再分配以來在做這個過程將非常昂貴和不必要的如上解釋與autoOptimize optimizeWrite國旗被打開之前這段代碼& autoCompact之上。
同樣,首先回填將是昂貴的,因為它需要把所有的數據(大)為δ格式但在這一點上,任何新的文件隻會攝取的處理將會減少。然而,你將會有CPU過載問題如果你住單節點的方式讀入數據。你需要做一個分布式集群讀入所以要與司機和工人2 - 8 &看你Ganglia指標(在集群信息與“標準”選項卡)幫助我們排除前進。一旦你更新集群,然後更新MaxFilesPerTrigger核心的總數在核心員工的總數。
讓我知道。
嗨Kaniz,
謝謝你的注意,謝謝大家的建議和幫助。@Joseph Kambourakis我的廣告你的建議我們的負載,但是我沒有看到任何改變在我們的數據加載或加載的時間數據。
我做了一些額外的研究和一個選擇那些有廣州的問題可以讀取數據文本文件使它快速閱讀,然後使用火花來推斷模式。
然而,最後我們決定使用自動裝卸機加載數據…但是我們還在等待幫助如何回填一年數據增量(每天)。
讓我知道如果你有任何建議,我增加了更多的康泰克斯上麵我的帖子來User16460565755155528764(磚)
謝謝,
K