0
点赞
收藏
分享

微信扫一扫

Windows7+SparkSQL编程基础|成功读写Hive

我是小瘦子哟 2022-02-07 阅读 30

本文代码基于前面撰写的几个博文,但还有一个重要的细节需要补充。先上代码吧。

关键代码

val spark = SparkSession
.builder()
.master("local")
.appName("Spark Hive Example")
.enableHiveSupport()
.getOrCreate()

spark.sql("use sparktest")

import spark.sql
sql("CREATE TABLE IF NOT EXISTS test_table (key INT, value STRING)")
sql("LOAD DATA LOCAL INPATH 'file:/D:/hive_test/src/main/resources/kv1.txt' INTO TABLE test_table")

// Queries are expressed in HiveQL
sql("SELECT * FROM test_table").show()

说明

细节决定成败!

【1】上面的文件kv1.txt位于我的机器的路径C:\hive-2.3.4\examples\files下。相信读者根据自己的hive安装位置容易找到这个文件。

【2】上面代码中除第一句外,下面的一些算是基本的HiveQL表达,不需赘述。即:读取一个本地文本文件中的内容,然后写到一个Hive数据库中新创建的表中,并显示于控制台(测试使用)。

【3】真正的关键还在于Hive在Windows下的正确安装与配置。

现在分析来看,我的上一个文章​​Windows7成功安装Hive-2.3.4!​​还是存在问题的。即当时我安装Hive前使用的是Hadoop 2.7.5,而且Hive相关测试只是初步成功!

但期间有一个关键问题是:与Hadoop安装一个最关键的内容是winutils.exe的问题。当时,我安装Hadoop 2.7.5时使用的不是对应版本的此文件。很可能(现在只能这样下结论)这个问题导致后面我在Idea下基于SparkSQL操作Hive时一直遭遇错误,主要错误内容主要围绕如下提示:

java.lang.IllegalArgumentException: Unable to locate hive jars to connect to metastore. Please set spark.sql.hive.metastore.jars.

有时候排解错误时,也不能光看表面字眼描述。在经过大量测试后,我把怀疑点放在与Hadoop不完全对应的winutils.exe问题上——问题还正出现这里!

读者可从​​此处​​下载与Hadoop对应的winutils.exe工具。

遗憾的是,没有与我的Hadoop2.7.5对应的。于是,我狠下心再次安装了Hadoop2.7.7并使用了完全与之匹配的winutils.exe工具!但也终于成功了!

【4】其他问题:其余的问题主要是由于本人对于各种大数据工具不太熟悉所致,算是小问题了,不再一一赘述。

参考

​​https://cloud.tencent.com/developer/article/1733891​​

​​https://www.cnblogs.com/mergy/p/12793008.html​​


举报

相关推荐

0 条评论