Spark

如何使用Spark-sql访问Hive表?

如果Spark-sql不能访问Hive表,请依次检查以下操作是否完成。没有完成的,需要在uhadoop集群和Spark客户端上操作:

- 将/home/hadoop/hive/conf/hive-site.xml和/home/hadoop/hbase/conf/hbase-site.xml拷贝到/home/hadoop/spark/conf/下;

- 将/home/hadoop/hive/lib/hive-serde-*-cdh*.jar拷贝到/home/hadoop/spark/lib/下;

- 在/home/hadoop/spark/conf/spark-env.sh中增加以下配置:

export LD_LIBRARY_PATH=undefined:/home/hadoop/lib/native
export SPARK_LIBRARY_PATH=undefined:/home/hadoop/lib/native
export SPARK_CLASS PATH=undefined:/home/hadoop/share/hadoop/common/:/home/hadoop/share/hadoop/common/lib/:/home/hadoop/spark/lib/:/home/hadoop/hive/lib/:/home/hadoop/hbase/lib/*

使用Spark连接数据库时,提示java.sql.SQLException怎么办?

如果使用Spark连接数据库时,遇到以下错误:

Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:mysql://

是因为集群上使用的mysql包是5.1.17版本的(home/hadoop/hive/lib/mysql-connector-java-5.1.17.jar),用户连的数据库的版本可能是更高版本。在mysql官网下载最新的包替换掉就可以了。

举例:

spark-submit --class users_day_activity --master yarn-client --jars /root/hive/lib/mysql-connector-java-5.6.jar --executor-memory 2g --num-executors 5

其他的数据库或者服务也可能出现这个问题, 找到对应的包用应该就可以了。

如何查看spark运行任务的日志

少部分存量集群没有配置spark的history,所以看不到spark任务的日志,需要重新配置下。

具体方法如下:

1.为spark配置jobhistory服务

修改配置文件/home/hadoop/spark/conf/spark-defaults.conf

    spark.history.ui.port 18080
    spark.eventLog.dir hdfs://Ucluster/var/log/spark
    spark.eventLog.enabled  true
    spark.yarn.historyServer.address uhadoop-XXXXXX-master2:18080
    spark.history.fs.logDirectory hdfs://Ucluster/var/log/spark
注解:

>

1.修改配置的机器为集群所有节点,包括提交任务的客户端;

>

2.uhadoop-XXXXXX需要修改为集群ID。

2.NodeManager配置log-url

在所有的nodemanger节点,为/home/hadoop/conf/yarn-site.xml增加以下配置:

     
      yarn.log.server.url
      http://uhadoop-XXXXXX-master2:19888/jobhistory/logs
     
地址配置为集群的master2的主机名。

修改后,重启nodemanager服务。

3.创建目录

在所有的nodemanger节点,以root用户执行以下命令:

    su -s /bin/bash hadoop -c 'hdfs dfs -mkdir hdfs://Ucluster/var/log/spark'
    su -s /bin/bash hadoop -c 'hdfs dfs -chmod 777  hdfs://Ucluster/var/log/spark'

4.启动服务

在master2节点上使用hadoop用户,执行/home/hadoop/spark/sbin/start-history-server.sh脚本。