基础代码:
import java.io.File
import org.apache.spark.sql.Row
import org.apache.spark.sql.SparkSession
case class Record(key: Int, value: String)
val warehouseLocation = new File("spark-warehouse").getAbsolutePath
val spark = SparkSession
.builder()
.appName("Spark Hive Example")
//.config("spark.sql.warehouse.dir", warehouseLocation)
.master("local[1]")
.enableHiveSupport()
.getOrCreate()
import spark.implicits._
import spark.sql
sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)")
sql("LOAD DATA LOCAL INPATH 'examples/src/main/resources/kv1.txt' INTO TABLE src")
sql("SELECT * FROM src").show()
sql("SELECT COUNT(*) FROM src").show()
上面所写的就是基本的代码,但是直接在IDEA上运行会产生一些错误。所以需要一些修改。
要让其能够运行,我们需要将core-site.xml,hdfs-site.xml和hive-site.xml导入到IDEA中的resources中。这样可以指定hive的数据存放在哪,以防IDEA到计算机的本地路径下去拿数据。
这时候有可能会出现有关于用户名的问题:
Caused by: org.apache.hadoop.security.AccessControlException: Permission denied: user=ZÏÈÉú, access=WRITE, inode="/user/hive/warehouse/src":hadoop:supergroup:drwxr-xr-x
这个调用的是你本机的用户名,你需要设置一下虚拟机的用户名


在上方标红处写上自己的用户名。
这样这个问题就解决了。
有的时候再运行又可能会出现mysql的一样,这是缺少mysql的驱动。
mysql-connector-java-5.1.46-bin.jar将这个jar包导入就可以解决这个问题了。
以上是我个人遇到的一些问题。不是很全面。
本文介绍了在使用Scala通过IntelliJ IDEA运行SparkSQL连接Hive时可能遇到的错误,包括配置core-site.xml、hdfs-site.xml和hive-site.xml到resources目录以指定Hive数据位置,解决权限问题以及添加mysql驱动来解决缺失驱动的问题。

2万+

被折叠的 条评论
为什么被折叠?



