hive語法創建分區表,方便CDM做增量導出

      網友投稿 1318 2022-05-30

      背景:

      數據湖里面建表,可以使用DataSource語法或Hive語法 ,兩種建表語法創建的OBS表(即外表)在運行job時,在分區表下的文件夾路徑會有所不同,DataSource語法創建的OBS分區表路徑生成無規律,不利于CDM做數據的增量導出。

      1. DataSource建表語法

      create table if not exists database.table ( begin_time string COMMENT '統計數據開始日期', ... dt STRING COMMENT '分區時間' ) USING PARQUET options ( path 'obs://----------------/' )PARTITIONED BY (dt) ;

      如下圖,在dt=20210401分區對應的數據,在OBS桶路徑下dt分區的父目錄 存在一串字符序列(由腳本運行時啟動的job_id生成的)

      hive語法創建分區表,方便CDM做增量導出

      2. Hive建表語法

      create table if not exists database.table )partitioned by (dt string comment '分區列') ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ",", -- 分隔符 "quoteChar" = "\001", -- 包圍符,根據CDM的包圍符來配置 "escapeChar" = "\\" -- 轉義字符 ) STORED AS TEXTFILE LOCATION '------;

      如果未指定,則使用默認的分隔符,包圍符和轉義符

      DEFAULT_ESCAPE_CHARACTER \ DEFAULT_QUOTE_CHARACTER " DEFAULT_SEPARATOR ,

      使用Hive的建表語法創建的分區表,在OBS桶路徑下dt分區的父目錄不會生成一串字符序列

      CDM做增量導出時,可以使用變量指定路徑,path/dt=${dateformat(yyyyMMdd)},由于DataSource創建OBS分區表會導致分區的路徑無規律可循,

      無法做數據的增量導出,所以推薦ads層可以使用hive建表語法,方便做增量導出。

      此 SerDe 適用于大多數 CSV 數據,但不處理嵌入式換行符,?\t?或?\n?無法直接轉義。要對它們進行轉義,請使用?"escapeChar" = "\\"。。要使用 SerDe,請指定完全限定的類名稱 org.apache.hadoop.hive.serde2.OpenCSVSerde。

      文檔基于原始文檔https://github.com/ogrodnek/csv-serde。

      DLI.0999: SerDeException: com.opencsv.exceptions.CsvMalformedLineException: Unterminated quoted field at end of CSV line. Beginning of lost text: [Problem solved rapidly ]

      在上圖的數據源文件,可以看到字段中的內容多了 換行符,導致文本切割出現問題。此報錯對于CDM 導出無影響,對于數據湖中的查詢可能報錯,文件掃描到該行會報錯

      原因:字段中的換行符導致csv文本切割出現問題,無法查詢

      解決方法: 1. 查詢報錯,在允許字段內容部分失真的情況下,可替換字段中的換行符;

      2. 用Parquet格式創建臨時表,重跑需要查詢的數據

      3. 在CDM導出的數據庫中查詢

      regexp_replace(brief_description , '\n|\r|\r\n', ' ') as brief_description

      ads層采用Hive語法創建的csv表,存儲的文件不帶標題行,在CDM配置時“首行為標題行”選項選擇“否”,創建的ads表使用的包圍符quoteChar注意與CDM的包圍符保持一致。

      Hive spark 云數據遷移 CDM 數據湖探索 DLI

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:醫療實施工作內容
      下一篇:web前端必備的VSCode插件
      相關文章
      亚洲精品无码专区在线在线播放| 亚洲精品一级无码中文字幕| 亚洲男同帅GAY片在线观看| 精品国产亚洲第一区二区三区 | 最新精品亚洲成a人在线观看| 亚洲Av无码国产情品久久 | 黑人精品videos亚洲人| 亚洲香蕉网久久综合影视| 狠狠综合久久综合88亚洲| 亚洲精品国产V片在线观看| 亚洲黄片毛片在线观看| 亚洲国产午夜福利在线播放| 亚洲国产精品自在拍在线播放| 亚洲男女内射在线播放| 亚洲色偷偷狠狠综合网| 国产日韩成人亚洲丁香婷婷| 亚洲视频在线一区二区| 亚洲综合国产精品第一页| 亚洲性久久久影院| 亚洲无线码在线一区观看| 亚洲乳大丰满中文字幕| 亚洲国产精品高清久久久| 久久青青成人亚洲精品| 亚洲黄色三级视频| 亚洲国产中文在线视频| 久久乐国产综合亚洲精品| 亚洲乱色熟女一区二区三区蜜臀| 亚洲成a∨人片在无码2023| 亚洲a∨国产av综合av下载| 亚洲国产91精品无码专区| 国产性爱在线观看亚洲黄色一级片| 亚洲中文字幕无码一区二区三区| 亚洲一区二区三区在线观看精品中文 | 67pao强力打造67194在线午夜亚洲| 亚洲蜜芽在线精品一区| 亚洲国产精品综合久久网各| 亚洲无人区码一二三码区别图片 | 中文字幕亚洲精品| 亚洲日本乱码卡2卡3卡新区| 亚洲av无码成人精品区一本二本| 亚洲A∨精品一区二区三区|