使用java在impala表中插入数据

rslzwgfq  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(362)

我已经抄了 mysql 将表格放入 hdfs 使用 sqoop 然后在中创建同名的表 impala 使用“ create external table “命令。
现在我有更多的数据要插入 impala 表格使用 java api Impala 。 ImpalaService.jar . 请帮助我使用插入数据 java api 在table上。
谢谢。

46scxncf

46scxncf1#

使用impalaservice.jar,您可以发送一条insert语句,例如:


# java -cp ../deps/libthrift-0.9.1.jar:../deps/slf4j.api-1.6.1.jar:./deps/slf4j-simple-.6.1.jar:../jar/ImpalaService.jar:./jar/ImpalaConnectTest.jar org.ImpalaConnectTest.ImpalaConnectTest localhost  21050 "insert into foo values (1,'message 1')"

Result size = 0

# 

然后,可以通过以下方式使用impalaservice.jar检查结果:


# java -cp ../deps/libthrift-0.9.1.jar:../deps/slf4j.api-1.6.1.jar:./deps/slf4j-simple-.6.1.jar:../jar/ImpalaService.jar:./jar/ImpalaConnectTest.jar org.ImpalaConnectTest.ImpalaConnectTest localhost  21050 "select * from foo"

Result size = 1
TRow(colVals:[<TColumnValue i32Val:TI32Value(value:1)>, <TColumnValue stringVal:TStringValue(value:message 1)>])

# 

或者使用 Impala 壳:

[root@dub-vcd-vms165 ~]# impala-shell
Starting Impala Shell without Kerberos authentication
Connected to XXXXXX
Server version: impalad version cdh5-1.3.0 RELEASE (build 40e1b62cf0b97f666d084d9509bf9639c575068c)
Welcome to the Impala shell. Press TAB twice to see a list of available commands.

Copyright (c) 2012 Cloudera, Inc. All rights reserved.

(Shell build version: Impala Shell vcdh5-1.3.0 (40e1b62) built on Tue Mar 25 13:46:44 PDT 2014)
[XXXXXX:21000] > select * from foo;
Query: select * from foo
+----+-----------+
| id | msg       |
+----+-----------+
| 1  | message 1 |
+----+-----------+
Returned 3 row(s) in 0.62s
[XXXXXX:21000] >

注意:如果要插入多个数据,则可以将impalaservice.jar修改为更详细的解决方案,通过使用参数指定包含要插入的所有记录的数据源来执行多个insert语句。
参考文献1:https://github.com/pauldeschacht/impala-java-client
参考文献2:https://github.com/pauldeschacht/impala-java-client/blob/master/test/src/org/impalaconnecttest.java

相关问题