java 怎么查询hive创建spark rdd

java 怎么查询hive创建spark rdd,第1张

查询hive,返回结果

将返回结果放到spark rdd

例如:

JavaSparkContext sc = new JavaSparkContext(conf)   

List<Integer>data = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

JavaRDD<Integer>distData = sc.parallelize(data)

其中data可以视为从hive查询得到

这里所说的在Java中执行Hive命令或HiveQL并不是指Hive

Client通过JDBC的方式连接HiveServer(or

HiveServer2)执行查询,而是简单的在部署了HiveServer的服务器上执行Hive命令。当然这是一个简单的事情,平常我们通过Hive做简单的数据分析实验的时候,都是直接进入Hive执行HiveQL

通过进入Hive执行HiveQL,只能将分析结果打印到屏幕或是存入临时表,如果想把分析结果写入文件,或者对分析结果做进一步的分析,用程序做分析,就是为什么要在Java中执行Hive命令。

Java在1.5过后提供了ProcessBuilder根据运行时环境启动一个Process调用执行运行时环境下的命令或应用程序(1.5以前使用Runtime),关于ProcessBuilder请参考Java相关文档。调用代码如下:

String

sql="show

tables

select

*

from

test_tb

limit

10"

List<String>

command

=

new

ArrayList<String>()

command.add("hive")

command.add("-e")

command.add(sql)

List<String>

results

=

new

ArrayList<String>()

ProcessBuilder

hiveProcessBuilder

=

new

ProcessBuilder(command)

hiveProcess

=

hiveProcessBuilder.start()

BufferedReader

br

=

new

BufferedReader(new

InputStreamReader(

hiveProcess.getInputStream()))

String

data

=

null

while

((data

=

br.readLine())

!=

null)

{

results.add(data)

}其中command可以是其它Hive命令,不一定是HiveQL。

try {

Class.forName("org.apache.hadoop.hive.jdbc.HiveDriver")

String selectSql = "select * from db.data where address = '11111111'"

Connection connect = DriverManager.getConnection("jdbc:hive://192.168.xx.xx:10000/db", "xxx", "xxx")

PreparedStatement state = null

state = connect.prepareStatement(selectSql)

ResultSet resultSet = state.executeQuery()

while (resultSet != null &&resultSet.next()) {

System.out.println(resultSet.getString(1) + " " + resultSet.getString(2))

}

} catch (Exception e) {

e.printStackTrace()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12189919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存