日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java API如何實現(xiàn)向Hive批量導(dǎo)入數(shù)據(jù)

瀏覽:22日期:2022-08-08 18:06:32
Java API實現(xiàn)向Hive批量導(dǎo)入數(shù)據(jù)

Java程序中產(chǎn)生的數(shù)據(jù),如果導(dǎo)入oracle或者mysql庫,可以通過jdbc連接insert批量操作完成,但是當(dāng)前版本的hive并不支持批量insert操作,因為需要先將結(jié)果數(shù)據(jù)寫入hdfs文件,然后插入Hive表中。

package com.enn.idcard; import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List; import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;/** * <p>Description: </p> * @author kangkaia * @date 2017年12月26日 下午1:42:24 */public class HiveJdbc { public static void main(String[] args) throws IOException { List<List> argList = new ArrayList<List>();List<String> arg = new ArrayList<String>();arg.add('12345');arg.add('m');argList.add(arg);arg = new ArrayList<String>();arg.add('54321');arg.add('f');argList.add(arg);//System.out.println(argList.toString());String dst = '/test/kk.txt';createFile(dst,argList);loadData2Hive(dst); } /** * 將數(shù)據(jù)插入hdfs中,用于load到hive表中,默認(rèn)分隔符是'001' * @param dst * @param contents * @throws IOException */ public static void createFile(String dst , List<List> argList) throws IOException{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path dstPath = new Path(dst); //目標(biāo)路徑//打開一個輸出流FSDataOutputStream outputStream = fs.create(dstPath);StringBuffer sb = new StringBuffer();for(List<String> arg:argList){for(String value:arg){sb.append(value).append('001');}sb.deleteCharAt(sb.length() - 4);//去掉最后一個分隔符sb.append('n');}sb.deleteCharAt(sb.length() - 2);//去掉最后一個換行符byte[] contents = sb.toString().getBytes();outputStream.write(contents);outputStream.close();fs.close();System.out.println('文件創(chuàng)建成功!'); } /** * 將HDFS文件load到hive表中 * @param dst */ public static void loadData2Hive(String dst) { String JDBC_DRIVER = 'org.apache.hive.jdbc.HiveDriver'; String CONNECTION_URL = 'jdbc:hive2://server-13:10000/default;auth=noSasl'; String username = 'admin';String password = 'admin';Connection con = null;try {Class.forName(JDBC_DRIVER);con = (Connection) DriverManager.getConnection(CONNECTION_URL,username,password);Statement stmt = con.createStatement();String sql = ' load data inpath ’'+dst+'’ into table population.population_information ';stmt.execute(sql);System.out.println('loadData到Hive表成功!');} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {// 關(guān)閉rs、ps和conif(con != null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}}} }注意:

本例使用mvn搭建,conf配置文件放在src/main/resources目錄下。

Hive提供的默認(rèn)文件存儲格式有textfile、sequencefile、rcfile等。用戶也可以通過實現(xiàn)接口來自定義輸入輸?shù)奈募袷健?/p>

在實際應(yīng)用中,textfile由于無壓縮,磁盤及解析的開銷都很大,一般很少使用。Sequencefile以鍵值對的形式存儲的二進(jìn)制的格式,其支持針對記錄級別和塊級別的壓縮。rcfile是一種行列結(jié)合的存儲方式(text file和sequencefile都是行表[row table]),其保證同一條記錄在同一個hdfs塊中,塊以列式存儲。一般而言,對于OLTP而言,行表優(yōu)勢大于列表,對于OLAP而言,列表的優(yōu)勢大于行表,特別容易想到當(dāng)做聚合操作時,列表的復(fù)雜度將會比行表小的多,雖然單獨rcfile的列運算不一定總是存在的,但是rcfile的高壓縮率確實減少文件大小,因此實際應(yīng)用中,rcfile總是成為不二的選擇,達(dá)觀數(shù)據(jù)平臺在選擇文件存儲格式時也大量選擇了rcfile方案。

通過hdfs導(dǎo)入hive的表默認(rèn)是textfile格式的,因此可以改變存儲格式,具體方法是先創(chuàng)建sequencefile、rcfile等格式的空表,然后重新插入數(shù)據(jù)即可。

insert overwrite table seqfile_table select * from textfile_table; ……insert overwrite table rcfile_table select * from textfile_table;java 批量插入hive中轉(zhuǎn)在HDFS

稍微修改了下,這文章是通過將數(shù)據(jù)存盤后,加載到HIVE.

模擬數(shù)據(jù)放到HDFS然后加載到HIVE,請大家記得添加HIVE JDBC依賴否則會報錯。

加載前的數(shù)據(jù)表最好用外部表,否則會drop表的時候元數(shù)據(jù)會一起刪除!

<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>1.1.0</version> </dependency>

代碼

import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;public class Demo { public static void main(String[] args) throws Exception { List<List> argList = new ArrayList<List>();List<String> arg = new ArrayList<String>();arg.add('12345');arg.add('m');argList.add(arg);arg = new ArrayList<String>();arg.add('54321');arg.add('f');argList.add(arg);//System.out.println(argList.toString());String dst = '/test/kk.txt';createFile(dst,argList);//loadData2Hive(dst); } /** * 將數(shù)據(jù)插入hdfs中,用于load到hive表中,默認(rèn)分隔符是'|' * @param dst * @param contents * @throws IOException * @throws Exception * @throws InterruptedException */ public static void createFile(String dst , List<List> argList) throws IOException, InterruptedException, Exception{Configuration conf = new Configuration();FileSystem fs = FileSystem.get(new URI('hdfs://hadoop:9000'),conf,'root');Path dstPath = new Path(dst); //目標(biāo)路徑//打開一個輸出流FSDataOutputStream outputStream = fs.create(dstPath);StringBuffer sb = new StringBuffer();for(List<String> arg:argList){for(String value:arg){sb.append(value).append('|');}sb.deleteCharAt(sb.length() - 1);//去掉最后一個分隔符sb.append('n');}byte[] contents = sb.toString().getBytes();outputStream.write(contents);outputStream.flush();;outputStream.close();fs.close();System.out.println('文件創(chuàng)建成功!'); } /** * 將HDFS文件load到hive表中 * @param dst */ public static void loadData2Hive(String dst) { String JDBC_DRIVER = 'org.apache.hive.jdbc.HiveDriver'; String CONNECTION_URL = 'jdbc:hive2://hadoop:10000/default'; String username = 'root';String password = 'root';Connection con = null;try {Class.forName(JDBC_DRIVER);con = (Connection) DriverManager.getConnection(CONNECTION_URL,username,password);Statement stmt = con.createStatement();String sql = ' load data inpath ’'+dst+'’ into table test ';//test 為插入的表stmt.execute(sql);System.out.println('loadData到Hive表成功!');} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}finally {// 關(guān)閉rs、ps和conif(con != null){try {con.close();} catch (SQLException e) {e.printStackTrace();}}}} }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品一二三区| 国产日韩1区| 欧美www视频在线观看| 久久精品免视看国产成人| 国产精品主播| 久久av导航| 精品三级在线观看视频| 久久97视频| 美女av在线免费看| 欧美日一区二区| 99riav国产精品| 夜夜精品视频| 午夜电影一区| 欧美黄页在线免费观看| 欧美xxxx中国| 久久精品青草| 国产精品日韩久久久| 中文字幕av一区二区三区人| 欧美亚洲一区二区三区| 免费亚洲婷婷| 久久久久午夜电影| 视频一区视频二区在线观看| 91久久精品无嫩草影院| 国产精品a久久久久| 午夜久久中文| 国产情侣一区| 在线视频精品| bbw在线视频| 日韩三级久久| 国产欧美91| 福利在线一区| 久久伦理在线| 亚洲天堂一区二区| 亚洲免费精品| 欧美专区18| 视频一区国产视频| 国产成人免费| 免费欧美日韩| 国产成人精品一区二区三区视频 | 日韩午夜在线| 日韩成人精品一区二区三区 | 超碰超碰人人人人精品| 日韩精品欧美| 久久一区视频| 日韩在线欧美| 日韩av电影一区| 一区在线免费观看| 国内精品伊人| 中日韩男男gay无套| 久久这里只有精品一区二区| 久久精品日韩欧美| 欧美日韩第一| 国产成人精品一区二区免费看京 | 久久精品国产在热久久| 蜜臀91精品国产高清在线观看| 日本v片在线高清不卡在线观看| 九色porny丨国产首页在线| 日本色综合中文字幕| 制服诱惑一区二区| 99精品视频精品精品视频| 91精品啪在线观看国产18| 国产精品羞羞答答在线观看| 人人精品人人爱| 日韩美女精品| 亚洲精品观看| 综合一区二区三区| 日韩一区精品字幕| 亚洲网址在线观看| 久久成人国产| 免费中文字幕日韩欧美| 午夜久久久久| 欧美中文一区二区| 欧美日韩精品一区二区三区视频 | 久久三级毛片| 国产欧美日本| 国产精品sm| 欧美精品二区| 日韩不卡一区二区| 涩涩涩久久久成人精品| 精品在线播放| 国产aⅴ精品一区二区三区久久| 免费一级欧美片在线观看网站 | 国产精品成人自拍| 亚洲第一区色| 国产精品99免费看| 久久国产精品亚洲77777| 亚洲婷婷丁香| 麻豆91精品91久久久的内涵| 荡女精品导航| 日韩精品久久久久久久电影99爱| 久久亚洲国产精品一区二区| 丰满少妇一区| 中文字幕日本一区二区| 国产精品白丝久久av网站| 久久免费精品| 久久亚洲精品中文字幕蜜潮电影| 婷婷精品视频| 国产精品视区| 欧美亚洲免费| 日韩一区二区免费看| 国产精品专区免费| 偷拍亚洲精品| 亚洲天堂av影院| 青青国产91久久久久久| 精品中文字幕一区二区三区 | 亚洲欧洲美洲国产香蕉| 国产视频一区二区在线播放| 美女av一区| 蜜臀av一区二区三区| 色网在线免费观看| 亚洲另类黄色| 91亚洲国产成人久久精品| 国模精品一区| 亚洲乱亚洲高清| 国产一区二区三区四区五区传媒| 亚洲激情另类| 久久狠狠婷婷| 国产videos久久| 国产欧美日韩精品一区二区三区| 福利片在线一区二区| 性色av一区二区怡红| 欧美国产91| 激情久久久久久| 日本久久精品| 麻豆91在线播放| 久久精品理论片| 福利一区视频| a天堂资源在线| 色爱av综合网| 亚洲午夜av| 亚洲精品小说| 亚洲一区欧美激情| 久久亚洲电影| 91九色综合| 精品视频高潮| 久久精品人人| 亚洲激情中文| 免费不卡中文字幕在线| 精品丝袜在线| 亚洲精品大全| 欧美精品导航| 欧美日一区二区| 日韩精品三区四区| 日韩欧美精品| 鲁大师成人一区二区三区| 国产精品白浆| 美女视频黄久久| 麻豆精品国产91久久久久久| 国产精品66| 日韩免费在线| 亚洲欧洲一区二区天堂久久| 中文字幕av一区二区三区人| 亚洲另类黄色| 久久久精品国产**网站| 日韩视频网站在线观看| 精品91久久久久| 日韩av一二三| 欧美激情另类| 夜夜精品视频| 国产欧美日韩免费观看| 麻豆理论在线观看| 99热精品在线观看| 中文字幕亚洲精品乱码| 久久不卡日韩美女| 色88888久久久久久影院| 三级欧美韩日大片在线看| 国产亚洲久久| 日韩欧美网址| 免费一区二区视频| 麻豆91在线播放| 99国产精品视频免费观看一公开| 日韩va亚洲va欧美va久久| 精品久久久久中文字幕小说| 亚洲成人日韩| 国产精品一在线观看| 三上悠亚国产精品一区二区三区| 在线日韩成人| 麻豆一区在线| 免费日韩一区二区| 久久久久97| 一区在线视频观看| 美女性感视频久久| 激情视频一区二区三区| 欧美亚洲自偷自偷| 久久国产电影| 日本视频中文字幕一区二区三区| 日韩国产综合| 日韩av资源网| 久久国产精品成人免费观看的软件| 亚洲日韩中文字幕一区| 国内一区二区三区| 蜜桃一区二区三区在线| 国模大尺度视频一区二区| 亚洲精品精选| 国产超碰精品| 国产精品宾馆| 亚洲日本久久| 久久久亚洲一区| 国产精品色在线网站| 亚洲一区中文|