最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Spark生產(chǎn)案例分享:Hive分區(qū)表修改字段名后Spark查詢空值?

2022-08-10 22:55 作者:滌生大數(shù)據(jù)  | 我要投稿

1.企業(yè)案例背景

? ? ? ?客戶最新產(chǎn)品文檔里要求變更字段名,數(shù)倉開發(fā)小伙伴按照客戶爸爸的要求使用Hive標(biāo)準(zhǔn)語法修改了列名;比如將字段FCD60改為FLN90。

?現(xiàn)象描述:表是分區(qū)ORC表,Spark版本2.4x。

? ? ? 修改歷史有歷史分區(qū)數(shù)據(jù)的表的字段名后,導(dǎo)致spark-sql讀取hive表歷史分區(qū)時(shí),被修改的字段FLN90讀取到的都是null值。但是讀取新的分區(qū)數(shù)據(jù)時(shí),不受影響,被修改的字段值可以正常讀取;

2.問題排查與解決

? ?排查測試,換個(gè)其他格式的表如textfile發(fā)現(xiàn)沒有這種問題。于是查詢spark官網(wǎng),搜索關(guān)于orc表這塊的Jira

? ?發(fā)現(xiàn)是可能是由于spark.sql.hive.convertMetastoreOrc參數(shù)默認(rèn)值的變化造成的,Spark 2.4 以后, Spark將采用自身的 SerDe 而非采用 Hive 的SerDe 處理 Hive 的 ORC 數(shù)據(jù)表(SerDe是Serialize/Deserilize的簡稱,目的是用于序列化和反序列化)

具體源代碼在于: HiveStrategies.scala中 RelationConversions 類中, 可以看到根據(jù)配置不同, 對于 ORC 文件采用兩種不同的處理方式

其中采用 org.apache.spark.sql.execution.datasources.orc.OrcFileFormat 會導(dǎo)致如上問題.

尖叫總結(jié):

在 Spark 2.3 以后, Spark 增加 spark.sql.hive.convertMetastoreOrc 參數(shù), 設(shè)定 ORC 文件使用采用向量化 Reader, 但是會引申由于 Spark SQL 無法與 Hive SQL 采用同一 SerDe 從而對 Parquet/Hive 數(shù)據(jù)表產(chǎn)生處理上的不同, 因此需要限定如下參數(shù)從而讓 Spark 使用 Hive 的SerDe.

?這就是一個(gè)很好的spark生產(chǎn)中遇到的案例,有應(yīng)用場景有解決方案,既體現(xiàn)了你扎實(shí)的spark功底,又體現(xiàn)了你生產(chǎn)中rouble shooting的能力。小白面試時(shí)講講這個(gè)案例,不比你背的八股文更加真實(shí)和加分哈;



Spark生產(chǎn)案例分享:Hive分區(qū)表修改字段名后Spark查詢空值?的評論 (共 條)

分享到微博請遵守國家法律
米易县| 台湾省| 奇台县| 开江县| 柏乡县| 洪泽县| 陵川县| 黑水县| 盘锦市| 哈巴河县| 望奎县| 泰安市| 勃利县| 威远县| 香河县| 临海市| 黄浦区| 南乐县| 元朗区| 荃湾区| 建昌县| 贵德县| 许昌市| 城步| 喀什市| 缙云县| 新建县| 舒城县| 淮阳县| 武平县| 四会市| 偃师市| 桑植县| 淮滨县| 莱州市| 广元市| 贡觉县| 宁波市| 洛南县| 南和县| 江华|