sparksql读取hive表中数据


文章目录


spark sql与hive本地调试

将hive-site.xml文件拷贝到resource目录中

pom.xml

  org.apache.sparkspark-hive_2.111.6.0

代码

import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf, SparkContext}

object SparksqlTest {

  def main(args: Array[String]): Unit = {
    val sparkconf = new SparkConf().setAppName("Hivesql").setMaster("local[*]")
    val sc = new SparkContext(sparkconf);
    val hiveContext = new HiveContext(sc)
    hiveContext.sql("select * from person1").show()
    sc.stop()

  }
}

new HiveContext空指针异常

报错 空指针异常,错误点在 new HiveContext()处

java.lang.NoClassDefFoundError - org/apache/spark/sql/hive/HiveContext

解决方法:将hadoop的源码包下载,解压到本地,在环境变量中配置HADOOP_HOME,

并将winutils.exe等一系列文件拷贝到源码中的bin目录中

权限: 异常

/tmp/hive on HDFS should be writable. Current permissions are: rwx–x--x

linux下笔者使用了hadoop命令

hadoop fs -chmod -R 777 /tmp

Windows下进入hadoop源码目录的bin目录下,搜索栏中敲cmd,然后执行

D:\software\hadoop-2.6.5\bin>winutils.exe chmod -R 777  D:/tmp

执行select查询的时候找不到host

java.net.UnknownHostException

将hdfs-site.xml文件拷贝进resource目录下,运行程序还是报错,笔者很生气,关闭idea,重启了下,好了

上一篇:SparkSQL在字节跳动的应用实践和优化实战


下一篇:sparksql和spark core 实现地域报表分析