2016-11-05 37 views
-1

我使用spark從數據庫中讀取數據,並將其寫入hdfs作爲parquet文件。這是代碼片段。保存後的Spark數據集計數

private long etlFunction(SparkSession spark){ 
    spark.sqlContext().setConf("spark.sql.parquet.compression.codec", "SNAPPY");  
    Properties properties = new Properties(); 
    properties.put("driver","oracle.jdbc.driver"); 
    properties.put("fetchSize","5000");  
    Dataset<Row> dataset = spark.read().jdbc(jdbcUrl, query, properties); 
    dataset.write.format("parquet」).save("pdfs-path"); 
    return dataset.count(); 
} 

當我看到火花UI,寫在我的下查詢計劃的書面記錄,在SQL選項卡中看到的統計數據。

雖然伯爵本身是一項艱鉅的任務。

有人可以建議以最優化的方式計算最佳方式。

要添加,有解決方案提到重複,涉及使用sparkListener計數。我大量重複使用sparkSession,因此實現起來會更加棘手。

感謝所有..

+0

[Spark:如何獲取寫入行數?]可能重複(http://stackoverflow.com/questions/37496650/spark-how-to-get-the-number-of-written-rows) – 2016-11-05 14:54:29

回答

1

實木複合地板是非常快的計數,所以你可以嘗試return spark.sqlContext().read.parquet("path").count()

+0

這將返回一個數據集,我期待數長。 – rohit

+0

我忘記了計數,看到更新的答案。 – Mariusz

+0

以及在我的問題中進行計數的方式會有所不同。我正在計算我曾經用實木複合地板編寫的相同數據集。 – rohit