SPARK ON HIVE:让spark sql通过sql的方式去读取hive当中的数据
HIVE ON SPARK:让hive的计算引擎由MapReduce改为SPARK
1、 先按官网的参考代码,构建
val conf = new SparkConf().setMaster("local[*]").setAppName("hotCount") val sc = new SparkContext(conf) //创建hive的实例 val hiveContext = new HiveContext(sc) hiveContext.sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)") hiveContext.sql("LOAD DATA LOCAL INPATH 'E:/hive.txt' INTO TABLE src") // Queries are expressed in HiveQL hiveContext.sql("FROM src SELECT key, value").collect().foreach(println) |
出现:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V |
我们之后在windows当中配置的hadoop版本是从apache下载,但是我们现在所使用的hadoop版本是cdh的。所以出现的版本不一致的问题。
1、 需要去下载一个cdh版本的hadoop
进入网站:http://archive.cloudera.com/cdh5/cdh/5/
配置HADOOP_HOME的环境变量
将插件中的
中的hadoop.dll文件 复制到C:/windows/system32目录下
在插件中的其它文件,复制到hadoop目录的/bin目录下。
注意:有可能是插件问题
现在可以保证,HiveContext可以操作相应的SQL。
但是该SQL操作的内容是来自于windows本地,没有与hive表进行连接。
2、让HiveContext与hive进行连接,出现下面样式,表示配置已经成功
将hive-site.xml、hdfs-site.xml、core-site.xml文件加入resource目录
需要在cdh的版本下,去找到hive的配置文件
2.1:find / -name ‘hive-site.xml’发现有多个配置文件,建议使用/etc/目录下的文件
2.2:在Idea项目去创建一个resource目录
2.3将配置文件复制到resource目录下
注意:在sparksql去连接是通过主机名去访问的,要让本地的hosts的ip与主机名对应。
连接成功了。但是看不到相应的数据
在hive当中去创建了一个很简单的表,通过spark sql去测试,发现是可以正常读取出来的。
查询不到结果与表结构有关。
flume到hive的表需要要求:分桶与orc格式。
在spark 1.6以及之前不支持。
在spark 2.*当中是可以通过spark sql来操作的。
将原始表中的数据,转换成我们计算的单元【根据需求来确定】