您好,登錄后才能下訂單哦!
這篇文章給大家介紹Spark SQL解析查詢parquet格式Hive表獲取分區(qū)字段和查詢條件的示例分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
問題現(xiàn)象
sparksql加載指定Hive分區(qū)表路徑,生成的DataSet沒有分區(qū)字段。
sparkSession.read.format("parquet").load(s"${hive_path}"),hive_path為Hive分區(qū)表在HDFS上的存儲路徑。
因為牽涉到的源碼比較多,這里僅以示例的程序中涉及到的源碼中的class、object和方法,繪制成xmind圖如下,想細(xì)心研究的可以參考該圖到spark源碼中進行分析。
問題分析
在沒有指定參數(shù)basePath的情況下:
sparksql底層處理后得到的basePaths: Set(new Path(“/spark/dw/test.db/test_partition/dt=20200101”))【偽代碼】
leafDirs: Seq(new Path(“/spark/dw/test.db/test_partition/dt=20200101”))【偽代碼】
sparksql底層處理后得到的basePaths: Set(new Path(“/spark/dw/test.db/test_partition/dt=20200101”),new Path(“/spark/dw/test.db/test_partition/dt=20200102”))【偽代碼】
leafDirs: Seq(new Path(“/spark/dw/test.db/test_partition/dt=20200101”),new Path(“/spark/dw/test.db/test_partition/dt=20200102”))【偽代碼】
解決方案(親測有效)
1.在Spark SQL加載Hive表數(shù)據(jù)路徑時,指定參數(shù)basePath,如
關(guān)于Spark SQL解析查詢parquet格式Hive表獲取分區(qū)字段和查詢條件的示例分析就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。