1. 程式人生 > 其它 >hive中匯入csv_[大資料]Hive:Spark,我發現你有小祕密啊~

hive中匯入csv_[大資料]Hive:Spark,我發現你有小祕密啊~

技術標籤:hive中匯入csv

01

請問,你的夢想是什麼?

在大資料公司中,任何一家公司都不會只使用一個框架吧?!

skr,skr~~

那我們今天就來聊一段 Hive 與 Spark的愛恨情仇

就像

feef4648d1ce8dd9759accbe9ba103b0.gif

在一些場景中,需要將外部的資料匯入到Hive表中,然後再對這些資料進行額外的處理,提供給不同的部門使用。

當導完資料之後,需要用到Spark進行後續的處理時,發現數據多了一條

Spark:Omg,我頂你個肺~

這種情況的排查,我們需要從資料來源頭一步步檢驗,找出來這突然多出來的資料究竟是何方妖怪,想想是一件很恐怖的事情

Hive:同志,冷靜

資料重複?索引重複?

俗話說不會面向度娘程式設計的Hive不是好Spark,在拔掉了兩根頭髮之後發現問題:表頭!

02

我不能干涉被測試框架的客觀性

環境模擬

Centos 7 Spark 2.4.4 scala 2.11.8 JDK 1.8 Hive 1.2.2 hadoop 2.7.3

建立測試表:testTab

createtableifnotexiststestTab(idstring,namestring) rowformatdelimitedfieldsterminatedby","tblproperties("skip.header.line.count"="1");

測試資料:testData.txt

id,name 1,xzheng 2,bbeir 3,hive 4,spark

載入資料到Hive表中:

load data local inpath "/usr/local/src/testData.txt" overwrite into table testTab;

在Hive中查詢:

select * from testTab;+----------------------+------------------------+--+| testTab.id           | testTab.name           |+----------------------+------------------------+--+| 1                    | xzheng                 ||2|bbeir|| 3                    | hive                   ||4|spark|+----------------------+------------------------+--+

Spark SQL查詢:

+---+------+|id |name  |+---+------+|id |name  || 1  |xzheng||2  |bbeir || 3  |hive  ||4  |spark |+---+------+

03

藥不能停、藥不能停

解決方法-1:

在原始表的基礎上,再建立一個備份表,通過Spark Sql查詢結果正確

create table if not exists testTab_2rowformatdelimitedfieldsterminatedby","asselect*fromtestTab;

解決方法-2:

通過spark的read函式,直接操作存在hdfs上的原始資料,然後再建表

scala> val df = spark.read.format("csv").option("path","hdfs://path_to_hdfs/testData.txt").option("header",true).option("delimiter",",").loadscala> df.show()+---+------+|id |name  |+---+------+|1 |xzheng|| 2  |bbeir ||3 |hive|| 4  |spark |+---+------+

04

我的青春真實存在過

Hive在建立表的時候可以通過增加:tblproperties("skip.header.line.count"="1") 語句來忽略第一行。

skip.heaer.line.count :跳過檔案行首多少行

skip.footer.line.count :跳過檔案行尾多少行

Hive中設定的忽略表頭在Spark中不生效!

Hive中設定的忽略表頭在Spark中不生效!

Hive中設定的忽略表頭在Spark中不生效!

05

你人性深處隱藏了很多小祕密

小祕密:

https://issues.apache.org/jira/browse/HIVE-5795

https://issues.apache.org/jira/browse/SPARK-11374

有不同看法,下方留言討論,別讓你的小祕密淹沒在未知裡

我也該嚥下這根美好的魚骨頭了

個人站點:www.TopAbu.com

bb0d2849aeb408a47414eb3a840766b8.png

那我現在跟你講國語了:

點點“在看”,你最好看!

點點”分享“,朋友也爽!