當前位置:首頁 » 操作系統 » hdfs導入資料庫

hdfs導入資料庫

發布時間: 2022-02-16 19:26:44

❶ 怎麼使用java代碼直接將從外部拿到的數據存入hdfs

存入HDFS有好幾種數據格式,我這里給你列出一種格式的存儲,sequence的

publicclassSeqWrite{

privatestaticfinalString[]data={"a,b,c,d,e,f,g","h,i,j,k,l,m,n","o,p,q,r,s,t","u,v,w,x,y,z","0,1,2,3,4","5,6,7,8,9"};

publicstaticvoidmain(String[]args)throwsIOException,Exception{

Configurationconfiguration=newConfiguration();
//這里是你主機的地址
configuration.set("fs.defaultFS","192.168.51.140");
//這個是存儲的路徑
Pathpath=newPath("/tmp/test1.seq");
Optionoption=SequenceFile.Writer.file(path);
OptionoptKey=SequenceFile.Writer.keyClass(IntWritable.class);
OptionoptValue=SequenceFile.Writer.valueClass(Text.class);
SequenceFile.Writerwriter=null;
IntWritablekey=newIntWritable(10);
Textvalue=newText();

writer=SequenceFile.createWriter(configuration,option,optKey,optValue);

for(inti=0;i<data.length;i++){
key.set(i);
value.set(data[i]);
writer.append(key,value);
writer.hsync();
Thread.sleep(10000L);
}

IOUtils.closeStream(writer);
}
}

❷ 使用sqoop將hive中的數據導入關系型資料庫怎麼去重

直接導入hive表
sqoop import --connect jdbc:postgresql://ip/db_name--username user_name --table table_name --hive-import -m 5
內部執行實際分三部,1.將數據導入hdfs(可在hdfs上找到相應目錄),2.創建hive表名相同的表,3,將hdfs上數據傳入hive表中
sqoop根據postgresql表創建hive表
sqoop create-hive-table --connect jdbc:postgresql://ip/db_name --username user_name --table table_name --hive-table hive_table_name( --hive-partition-key partition_name若需要分區則加入分區名稱)
導入hive已經創建好的表中
sqoop import --connect jdbc:postgresql://ip/db_name --username user_name --table table_name --hive-import -m 5 --hive-table hive_table_name (--hive-partition-key partition_name --hive-partition-value partititon_value);
使用query導入hive表
sqoop import --connect jdbc:postgresql://ip/db_name --username user_name --query "select ,* from retail_tb_order where \$CONDITIONS" --hive-import -m 5 --hive-table hive_table_name (--hive-partition-key partition_name --hive-partition-value partititon_value);
注意:$CONDITIONS條件必須有,query子句若用雙引號,則$CONDITIONS需要使用\轉義,若使用單引號,則不需要轉義。

❸ 關系資料庫數據導入hdfs,是用sqoop還是用shell,ke

1.jpg sqoop是關系型資料庫與非關系型資料庫之間轉換數據,hdfs二者都不屬於,所以sqoop不能轉換hdfs的數據。支持條件過濾,但是並不是你所說的條件select into,而是另外的一種形式。詳細可以參考下面帖子:sqoop、sqoop2介紹及如何使用高可用性:Sqoop工具import和export使用詳解

❹ 怎麼通過sqoop將hdfs上數據導入到mysql

sqoop是一個能把數據在關系型資料庫和HDFS之間互相傳輸的工具。在這里,我寫一下用java 程序來實現sqoop把數據從HDFS寫入到MYSQL。
在接觸sqoop之前,我自己寫了一個傳輸類來實現數據從HDFS到MYSQL。這里簡單說一下時間的思想:
1、在MYSQL中創建一個參數表A,用來記錄要傳輸的表的表名B和欄位。
2、HDFS上的數據的格式和MYSQL中參數表A中B表的欄位的數量一樣。
3、從MYSQL的參數表A中,讀取要傳輸的表B。把這些欄位拼湊成一個insert語句,例如
,拼湊為insert into b(column1,column2..) values(value1,value2...)
4、從HDFS相應的目錄逐行讀取數據,通過JDBC,把數據批量導入到MYSQL的B表中。
我現在用sqoop來代替原來傳輸的那個功能。先做一下准備工作:
1、hadoop的每個節點下lib文件夾中要有mysql的jar包和sqoop的jar包。
2、在HDFS的某個目錄上的數據格式和MYSQL相應的表中的欄位數量一致。
實現類如下:
package sqoop;
import java .util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.sqoop.Sqoop;
import org.apache.sqoop.tool.ExportTool;
/**
* 用SQOOP來把數據從HDFS導入到MYSQL。
* */
public class Test {
public static void main(String[] args) {
List<String> generatedJarsList = new ArrayList<String>();
Configuration conf = new Configuration();
conf.set("fs.default.name", "hdfs://master:9000");
conf.set("hadoop.job.ugi", "hadooper,hadoopgroup");
conf.set("mapred.job.tracker", "master:9001");
ArrayList<String> list = new ArrayList<String>(); //定義一個list
list.add("--table");
list.add("a_baat_client"); //mysql中的表。將來數據要導入到這個表中。
list.add("--export-dir");
list.add("/tmp/datathree/"); //hdfs上的目錄。這個目錄下的數據要導入到a_baat_client這個表中。
list.add("--connect");
list.add("jdbc:mysql://192.168.1.10:3306/report"); //mysql的鏈接
list.add("--username");
list.add("root"); //mysql的用戶名
list.add("--password");
list.add("root"); //mysql的密碼
list.add("--lines-terminated-by");
list.add("\\n"); //數據的換行符號
list.add("-m");
list.add("1");//定義maprece的數量。
String[] arg = new String[1];
ExportTool exporter = new ExportTool();
Sqoop sqoop = new Sqoop(exporter);
sqoop.setConf(conf);
arg = list.toArray(new String[0]);
int result = Sqoop.runSqoop(sqoop, arg);
System.out.println("res:" + result); //列印執行結果。
}
}
這個導出類執行過程中,可以在瀏覽器中看一下http://master:50030頁面。會發現導出數據也是一個把任務轉換為maprece執行的過程。
當然,上面的java代碼,也可以用命令行來實現。命令如下:
bin/sqoop export --connect jdbc:mysql://192.168.1.10:3306/report \
--table a_baat_client --username root --password root \
--export-dir /tmp/datathree/ -m 1
關於sqoop把數據從HDFS導入到MYSQL就說這么多。把數據從HIVE導入到MYSQL,其實可以理解為把HIVE表所對應的HDFS路徑的數據導入到MYSQL,這里就不多說了。

❺ mysql導入到hive hdfs上顯示又數據了 hive表裡面什麼都沒有

hdfs顯示但是hive裡面沒有的話,很可能hive配置使用的是自帶的deby資料庫。hive的配置文件弄好,如果用sqoop的話,把hive的配置文件hive-site.sh拷貝一份到sqoop的conf目錄下,讓sqoop知道保存的數據是到mysql元資料庫的hive。

熱點內容
電腦能上網但是游戲鏈接不到伺服器 發布:2024-11-10 07:35:49 瀏覽:671
編譯器怎麼知道源程序位置 發布:2024-11-10 07:16:02 瀏覽:585
網頁游戲源碼H5 發布:2024-11-10 07:05:47 瀏覽:307
java使用c 發布:2024-11-10 06:52:55 瀏覽:878
內存儲器與外存儲器哪個存儲量大 發布:2024-11-10 06:43:50 瀏覽:734
賺錢寶緩存復制 發布:2024-11-10 06:41:30 瀏覽:389
29源碼 發布:2024-11-10 06:41:28 瀏覽:533
演算法是前端嘛 發布:2024-11-10 06:37:45 瀏覽:914
弦距演算法 發布:2024-11-10 06:07:30 瀏覽:717
編譯裝載 發布:2024-11-10 05:53:57 瀏覽:623