关于spark on hive 执行建表语句出现的用户权限问题
Permission denied: user=PC, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
解决方法
在代码开头设置参数:System.setProperty("HADOOP_USER_NAME","root")
即可
以root角色访问hdfs目录
System.setProperty("HADOOP_USER_NAME","root")
val spark: SparkSession = SparkSession.builder().appName("sparksqldemo").master("local[*]")
.config("spark.sql.shuffle.partitions", "4")//本次测试时将分区数设置小一点,实际开发中可以根据集群规模调整大小,默认200
.config("spark.sql.warehouse.dir", "hdfs://node1:8020/user/hive/warehouse")//指定Hive数据库在HDFS上的位置
.config("hive.metastore.uris", "thrift://node1:9083")
.enableHiveSupport()//开启对hive语法的支持
.getOrCreate()
// 开启spark上下文对象
val sc = spark.sparkContext
// 设置日志级别
sc.setLogLevel("WARN")
//隐式转换
import spark.implicits._
spark.sql("show databases").show(false)
spark.sql("show tables").show(false)
spark.sql("CREATE TABLE person (id int, name string, age int) row format delimited fields terminated by ' '")
spark.sql("LOAD DATA LOCAL INPATH 'file:///D:/data/person.txt' INTO TABLE person")
spark.sql("show tables").show(false)
关闭资源
spark.stop()