hive java導入CVS

原文:http://bbs.chinahadoop.cn/thread-5343-1-1.html

----------------------------------------------------------------------------------

本文的目的是hive讀取cvs文件,忽略字段中‘\,’,最終還是以','來分割文本
cvs格式是以逗號','隔開的文件格式,文本中可能在字段里又包含了逗號轉義符號‘\,’
文件格式舉例:
1,2,5,(hah\,ahojg)
如果用hive自帶的分隔符建表:
create table IF NOT EXISTS test_table(p_id INT,tm INT,idate INT,url STRING)
partitioned by (dt string)
row format delimited fields terminated by ','? ?或者為 '\,'?
STORED AS INPUTFORMAT
'com.hadoop.mapred.DeprecatedLzoTextInputFormat'??
OUTPUTFORMAT??
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'?
location '/hdfs/data/incoming';
結果都會被分為:1 2 5 (hah\ ahojg)
因為hive只識別一個字符的分隔符,所以需要我們編寫自己的input/output format
下面這段代碼是網上截取的,將多個分隔符換成hive自帶的\001
想要忽略‘\,’的目的,建紅色的代碼修改如下即可:
//先將‘\,’換成'@'?,處理完逗號分隔符,再將'@'?換成 '\,'
String repalceString_01 = value.toString().replace("\\,", "@");
String repalceString_02 = repalceString_01.replace(",", "\001");
String strReplace = repalceString_02.replace("@", "\\,");

------------------------------------------------------------------------------------------------------
步驟:myeclipse中建立java工程,根目錄下新建lib目錄,添加hadoop和常用的jar包

  • 編寫自定義InputFormat(MutilCharInputFormat
  • 編寫自定義MutilCharRecordReader實現RecordReader接口,并重寫next方法
編寫自定義Input Format
01 package?com.icloud.hive;

02 import java.io.IOException;

03 import org.apache.commons.logging.Log;

04 import org.apache.commons.logging.LogFactory;

05 import org.apache.hadoop.io.LongWritable;

06 import org.apache.hadoop.io.Text;

07 import org.apache.hadoop.mapred.FileSplit;

08 import org.apache.hadoop.mapred.InputSplit;

09 import org.apache.hadoop.mapred.JobConf;

10 import org.apache.hadoop.mapred.RecordReader;

11 import org.apache.hadoop.mapred.Reporter;

12 import org.apache.hadoop.mapred.TextInputFormat;

13 ?

14 public class MutilCharInputFormat extends TextInputFormat{

15 private static final Log log = LogFactory.getLog(MutilCharRecordReader.class);

16 ?

17 @Override

18 public RecordReader<LongWritable, Text> getRecordReader(

19 InputSplit genericSplit, JobConf job, Reporter reporter)

20 throws IOException {

21 reporter.setStatus(genericSplit.toString());

22 //創建MutilCharRecordReader并返回

23 return new MutilCharRecordReader((FileSplit)genericSplit,job);

24 }

25 }




本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/539150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539150.shtml
英文地址,請注明出處:http://en.pswp.cn/news/539150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django 博客教程(三):創建應用和編寫數據庫模型

創建 django 博客應用 在上一章節中我們創建了 django 博客的工程&#xff0c;并且成功地運行了它。然而這一切都是 django 為我們創建的項目初始內容&#xff0c;django 不可能為我們初始化生成我們需要的博客代碼&#xff0c;這些功能性代碼都得由我們自己編寫。 django 鼓勵…

python將16進制字符串轉換為整數_Python 16進制與字符串的轉換

電腦上裝了Python2.7和3.3兩個版本&#xff0c;平時運行程序包括在Eclipse里面調試都會使用2.7&#xff0c;但是由于某些原因在cmd命令行中輸入python得到的解釋器則是3.3, 一直沒對此做處理&#xff0c;因為這樣可以對兩個版本的差異有一個測試&#xff0c;而且虛擬機里面是2.…

python多個文件打包成exe_多個py文件生成一個可運行exe文件

一、概述 目前有一個python腳本,需要在別的電腦中運行,安裝python環境太麻煩,封裝成exe文件,運行比較方便。 二、演示 環境說明 python版本:3.7.9 操作系統:windows 10 安裝模塊 pip3 installer pyinstaller 封裝 新建目錄test,目錄結構如下: ./├── conf.py └── …

CSV文件的轉義處理

原文&#xff1a;http://blog.csdn.net/maqingli20/article/details/7095132 ------------------------------------------------------------------------------------ CSV文件是一種適合程序格式化輸出數據的文件格式。它使用英文逗號作為列分隔符&#xff0c;文件可以直接用…

華為讀取版本exe_關于esrv_svc.exe和SurSvc.exe疑似泄露用戶信息的猜測

封面圖片來源&#xff1a;https://www.weibo.com/1885454921/GpBhR3vpk?typerepost#_rnd1573301201348抱歉&#xff0c;寫網頁文章的次數不多&#xff0c;排版沒研究過&#xff0c;請原諒。下面是正題&#xff1a;由來&#xff1a;最初是借由火絨的自定義防護規則&#xff0c;…

gitlab ci mysql_php-Gitlab CI:在階段之間保留MySQL數據

根據Gitlab問題頁面&#xff1a;Share service between build stages.Gitlab-CI的設置方式如下&#xff1a;each job is run in each job is run independently of the others,including potentially running on different machines. And the servicesare run locally on each …

flask 部署_只需10分鐘!就能用Flask,Docker和Jenkins部署機器學習模型

摘要&#xff1a; 一杯茶的功夫部署完成機器學習模型&#xff01;在生產環境中部署機器學習模型是數據工程中經常被忽視的領域。網上的大多數教程/博客都側重于構建、訓練和調整機器學習模型。如果它不能用于實際的預測&#xff0c;那么它又有什么用呢&#xff1f; 接下來了解一…

Hive 導入CSV文件

SerDe 介紹 Hive 使用如下FileFormat 類讀寫 HDFS files: TextInputFormat/HiveIgnoreKeyTextOutputFormat: 讀寫普通HDFS文本文件. SequenceFileInputFormat/SequenceFileOutputFormat: 讀寫SequenceFile格式的HDFS文件. Hive 使用如下SerDe 類(反)序列化數據: MetadataTyp…

騰訊云mysql架構_一個數據庫存儲架構的獨白

本文由云社區發表本文作者&#xff1a;許中清&#xff0c;騰訊云自研數據庫CynosDB的分布式存儲CynosStore負責人。從事數據庫內核開發、數據庫產品架構和規劃。曾就職于華為&#xff0c;2015年加入騰訊&#xff0c;參與過TBase(PGXZ)、CynosDB等數據庫產品研發。專注于關系數據…

Hive高級函數

Hive的函數太多了。用法和sql的差不多。 簡單查詢 select ... from...where... 使用各種函數 hive>show functions;//查看所有函數 hive>describe function explode;//查看函數的使用方法 LIMIT語句 列別名 嵌套select語句 標準函數&#xff1a; reverse() upper() ...…

groupby索引有效嗎_SQL IN 一定走索引嗎?

摘要IN 一定走索引嗎&#xff1f;那當然了&#xff0c;不走索引還能全部掃描嗎&#xff1f;好像之前有看到過什么Exist,IN走不走索引的討論。但是好像看的太久了&#xff0c;又忘記了。哈哈&#xff0c;如果你也忘記了MySQL中IN是如何查詢的&#xff0c;就來復習下吧。問題問題…

mysql函數使用場景_mysql的函數和存儲過程的比較,以及在實際場景中的使用案例...

一.存儲過程和函數的區別函數調用有返回值存儲過程調用用call語句&#xff0c;函數調用直接飲用函數名參數IN&#xff0c;OUT&#xff0c;INOUT只適用于存儲過程&#xff0c;對函數而言所有參數默認都是輸入參數IN用于把數值傳入到存儲過程中OUT用于輸出參數將數值傳遞給調用者…

hive性能調優

原文&#xff1a;http://www.tuicool.com/articles/rMvQvm ---------------------------------------------------------------------- limit 限制調整 -- 因為使用 limit 語句時候&#xff0c;是先執行整個查詢語句&#xff0c;然后再返回部分結果的 set hive.limit.optimize…

推薦系統之 BPR 算法及 Librec的BPR算法實現【1】

【推薦系統之 BPR 算法】 1、關于BPR的論文原文&#xff1a; BPR: Bayesian Personalized Ranking from Implicit Feedback 2、參考1&#xff1a;論文快讀 - BPR: Bayesian Personalized Ranking from Implicit Feedback &#xff08;該博主的網站不錯&#xff0c;尤其論文快…

ios 篩選_萬千網友讓quot;低調使用quot;的軟件!居然還支持iOS

點擊藍字關注我們昨天的耳朵神器大家感覺怎么樣&#xff1f;享受了耳朵今天我們享受一下眼睛~可能很多同學對漫畫是情有獨鐘但是&#xff0c;之前小黑一直介紹的都是安卓端的軟件今天要給大家介紹的這款軟件是IOS安卓都有終于可以不被IOS的同學吐槽了而且經過測試小黑真的想說一…

Linux卸載/刪除多余網卡

卸載 使用命令ifconfig命令查看網卡情況 確認自己使用的是哪一塊網卡&#xff0c;然后把其它的網卡都卸載掉。 運行命令ifconfig 網卡名稱 down。 如&#xff1a; ifconfig eth1 down 再次運行ifconfig就會發現被卸載掉的網卡沒了。現在可以ping 一下內網的IP試試看能不能pin…

CentOS7:JDK1.7.0_80安裝

一、安裝前檢查 執行以下命令&#xff1a; rpm -qa | grep jdk 查看系統是否已經自帶openjdk,如果存在 執行以下命令&#xff1a; yum -y remove files files為查出的、系統自帶的openjdk相關文件&#xff0c;運行以上命令將相關文件卸載 執行命令 java -version[rootlocalhost…

python海龜繪圖畫圣誕帽男人_python海龜繪圖實例教程

本文以實例形式介紹了python turtle模塊即海龜繪圖的使用方法&#xff0c;對于需要進行圖形編程的朋友相信會有一定的借鑒價值。python turtle模塊簡介&#xff1a;python2.6版本中引入的一個簡單的繪圖工具&#xff0c;叫做海龜繪圖(turtle graphics)1.使用海龜繪圖首先我們需…

spring+mybatis 多數據源整合

原文&#xff1a;http://blog.csdn.net/fhx007/article/details/12530735 ---------------------------------------------------------------------------------- 直接看spring的配置吧 <!-- 數據源配置 --> <bean id"ds1" class"org.apache.commo…

四管前級怎么去掉高低音音調_一些歌曲音調太高怎么才能唱上去??

展開全部首先得提高肺活量 然后就是練聲&#xff01;怎 樣 練 聲&#xff1a;練聲的目的1&#xff0c;使歌唱發聲系統各器官的肌肉更e68a84e8a2ad62616964757a686964616f31333236373231有力&#xff0c;并能協調一致。2&#xff0c;建立正確的聲音概念。3&#xff0c;擴展音域&…