国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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查詢空值?的評論 (共 條)

分享到微博請遵守國家法律
任丘市| 于都县| 宁明县| 陵川县| 舟山市| 扶绥县| 赤壁市| 澄江县| 荔浦县| 榆林市| 平定县| 岳普湖县| 闽清县| 嘉义县| 石棉县| 荥阳市| 辽阳县| 灵台县| 横峰县| 福海县| 竹山县| 遵化市| 蒲江县| 抚远县| 拉萨市| 万盛区| 大同县| 万州区| 龙州县| 丰顺县| 伊宁县| 三门县| 永德县| 临西县| 绍兴市| 自贡市| 庆城县| 北辰区| 牙克石市| 隆安县| 曲靖市|