取消
顯示的結果
而不是尋找
你的意思是:

數據大小膨脹大量攝入

Erik_L
因素二世

目標

本地數據的導入和鞏固GBs / TBs 20 mb的塊鑲花文件到磚/三角洲湖/分區表。

我所做的

我把一小部分的數據,約72.5 GB和攝取使用下麵流。數據的順序和等級排序已經“id / time_bin / smaller_time_bin.parquet”。每個分區應該表示~ 12-20 GB。結果:

  • 需要與4 ~ 4.5小時超大“通用”計算實例
  • 它打擊了~ 300 GB大小
  • 它不能處理我提供的模式,導致“PlainLong”地圖錯誤(稍後我會抓住,如果相關)

為什麼吹那麼大,為什麼要這麼長時間?我以前做的一個項目~ ~ 15 GB,隻花了5 - 10分鍾來攝取1 - 2大一般情況下,所以我想有一個問題我下麵閱讀代碼,否則它應該隻需要~ 30分鍾到1個小時。

注意:brotli原始壓縮,但這是不支持的三角洲緩存,所以我讓它轉換為時髦的(默認壓縮)。

代碼

從pyspark.sql。從pyspark.sql進口*類型。功能導入坳、current_timestamp expr、input_file_name regexp_extract, unix_timestamp, from_unixtime,年,月,dayofmonth,小時#下麵定義變量用於代碼file_path = " s3: / / <桶> /拚花/ < id > / * * / < time_series_data > / *。拚花“用戶名=火花。的sql(“選擇regexp_replace (current_user (),“[^ a-zA-Z0-9] ', ' _ ')”)當代()[0]table_name = f“test_small_1 checkpoint_path = f“/ tmp / {username} / _checkpoint / ingest_test_small_1”#清除數據從之前的演示執行火花。sql (f“DROP TABLE如果存在{table_name}”) dbutils.fs。rm (checkpoint_path,真)模式= StructType ([StructField (“t”, LongType ()), StructField (“x”, FloatType ()), StructField (“y”, FloatType ()), StructField (“z”, FloatType()),])(火花。readStream .format .option (“cloudFiles (“cloudFiles”)。allowOverwrites”,真的).option (“modifiedAfter”、“2022-12-21 00:00:00.000000 UTC + 0”) .option (“cloudFiles。格式”、“鋪”).option (“cloudFiles。schemaLocation”, checkpoint_path) .option (“spark.databricks.io.cache。啟用”,假).option (“mergeSchema”,“真正的”)# . schema(模式).load (file_path) .select (“*”) .withColumn (“id”, regexp_extract (input_file_name (), r年代:/ / <桶> /拚花/ ((a-zA-Z0-9) *) /。* ',1)).withColumn(“時間戳”,expr (“timestamp_micros (BIGINT (ts))”)) .withColumn(“年”,年(col(“時間戳”))).withColumn(“月”,月(col(“時間戳”))).writeStream .partitionBy .option(“年”、“月”)(“checkpointLocation”, checkpoint_path) .trigger (availableNow = True) .toTable (table_name))

1接受解決方案

接受的解決方案

匿名
不適用

Def跑到小文件的問題。3500年20 mbg塊70 gb文件讀取和處理如此大量的調度和開銷。

添加年和月列實際上不會增加捕獲數據大小,因為這些值的路徑,而不是在實際的文件。

在原帖子查看解決方案

3回複3

Erik_L
因素二世

我懷疑的添加分區列“年”、“月”和“id”進行大小的兩倍。Brotli是更好的壓縮比上口,所以也許,剩下的~ 2 x不同大小?

有沒有更好的方法來避免將列添加到分區嗎?也,我應該避免使用IDs,而是使用int,鑒於惟一id的數量是100年的,以節省空間和可能導致更好的z值嗎?

匿名
不適用

Def跑到小文件的問題。3500年20 mbg塊70 gb文件讀取和處理如此大量的調度和開銷。

添加年和月列實際上不會增加捕獲數據大小,因為這些值的路徑,而不是在實際的文件。

匿名
不適用

嗨@Erik路易

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map