免费注册
帮助文档(华北一、二)

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

    如果Spark-sql不能访问Hive表,请依次检查以下操作是否完成。没有完成的,需要在hadoop集群和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=$LD_LIBRARY_PATH:/home/hadoop/lib/native 
    export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:/home/hadoop/lib/native 
    export SPARK_CLASS
    PATH=$SPARK_CLASSPATH:/home/hadoop/share/hadoop/common/:/home/hadoop/share/
    hadoop/common/lib/:/home/hadoop/spark/lib/:/home/hadoop/hive/lib/:/home/hadoop/hbase/lib/*

    2、使用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

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

    3、如何查看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.hadoop-XXXXXX需要修改为集群ID。

    ● 2. NodeManager配置log-url

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

     
    <property>       
    <name>yarn.log.server.url</name>       
    <value>http://uhadoop-XXXXXX-master2:19888/jobhistory/logs</value>      
    </property>

    地址配置为集群的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脚本。


文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家