spark sql匯入資料遇到的問題

2021-10-01 12:49:36 字數 1464 閱讀 1094

spark-sql 客戶端通過load data local inpath '/xx/xx' into table xx;方式匯入,資料**是oracle匯出的csv檔案

資料匯入後遇到下面的問題

1,字串帶有雙引號問題  通過sed命令直接替刪除字段完成;

2 , 時間型別格式不正確,匯出時沒有設定時間格式,如果匯出時yyyy/mm/dd hh:mm:ss,二spark支援的是yyyy-mm-dd hh:mm:ss格式,那麼匯入時時間型別匯入為空,可以通過sed命令將「/」 替換為『-』;sed -i 's#/#-#g' 檔名 將「/」替換成「-」

3,同樣是空,匯入後不同型別顯示效果不同,匯入檔案格式時是逗號是分割符號為例,逗號數量和字段數量相同才成立。

如果,字串型別匯入是空字串'' ,判斷型別為name=『』

數字型別和時間型別是null 判斷條件為 age is null

例如 建立表

create table test_str(

name string,

age int,

price decimal,

time_date date,

time_date01 time stamp,

name01 string

) row format delimited fields terminated by ',' stored as textfile;

建立檔案

zhangsss,23,,,

,,,,

zhanaaaa,23,23.2,,

ahangbbb,23,23.4,2018-01-01,

bbbbbbbb,23,23.4,2019-01-01,2019-01-01 12:12:12

通過laod 方式載入到表 test_str中

欄位name為空相當插入字串''

如果逗號數量少乙個,最後乙個字段不管是什麼型別都是null;

sed命令簡單使用

sed 命令刪除第一行

sed -i '1d'  filename

sed 刪除行指定字元的字串

sed -i 's/zhan/li/g' filename  將zhan替換為li

sed -i 's/zhan//g' filename  將zhan刪除

sed替換特殊字元/

sed -i 's#/##g' 檔名

sed -i 's#/#-#g' 檔名 將「/」替換成「-」

sed  批量替換

sed  -i 's/zhan/li/g'  -rl   /目錄下面/*.txt

或sed  -i 's/zhan/li/g'  -rl   /目錄下面/

-i選項是直接在檔案中替換,不在終端輸出;

-r選項是所給的path中的目錄遞迴查詢;

-l選項是輸出所有匹配到oldstring的檔案;

sed命令詳細教程可以看下面的部落格

mysql資料匯入遇到的timestamp型別問題

今天準備把最新的表匯入自己以前的機子上做臨時開發,在資料庫匯入的時候遇到乙個問題 incorrect table definition there can be only one timestamp column with current timestamp in default or on upd...

使用SparkSql從Mysql中匯入匯出資料

匯入資料 建立properties物件,配置mysql的密碼和使用者名稱 val properties new properties properties.setproperty user username properties.setproperty password password 呼叫spa...

sparkSQL讀取資料的方法

本文中所有資料以本地資料為資料來源 1 讀取json檔案 2 讀取txt檔案 spark.read下除了json方法用於讀取json檔案外,還有讀取資料的而其他方式,使用testfile方法時一直不行,不清楚是對txt檔案的格式有要求還是後續的方法不對,有朋友知道的勞煩指點下 val testtxt...