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脚本。