【问题标题】:Accessing Hive tables in spark在 spark 中访问 Hive 表
【发布时间】:2014-12-09 05:48:25
【问题描述】:

我安装了 Hive 0.13 并创建了自定义数据库。我有使用 mvn -hive 选项构建的 spark 1.1.0 单节点集群。 我想使用 hivecontext 在 spark 应用程序中访问此数据库中的表。但是 hivecontext 总是读取在 spark 目录中创建的本地元存储。我已将 hive-site.xml 复制到 spark/conf 目录中。
我还需要做其他配置吗?

【问题讨论】:

    标签: hadoop apache-spark hive


    【解决方案1】:

    第 1 步: 使用最新版本安装 SPARK....

    $ cd $SPARK_Home; ./sbt/sbt -Phive assembly
    $ cd $SPARK_Home; ./sbt/sbt -Phivethriftserver assembly
    

    通过执行此操作,您将下载一些jar文件,默认情况下将添加它,无需添加....

    第 2 步:
    hive-site.xml 从 Hive 集群复制到 $SPARK_HOME/conf/dir 并编辑 XML 文件并将这些属性添加到下面列出的该文件中:

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://MYSQL_HOST:3306/hive_{version}</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore/description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>XXXXXXXX</value>
        <description>Username to use against metastore database/description>
    </property> 
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>XXXXXXXX</value>
        <description>Password to use against metastore database/description>
    </property>
    

    第 3 步:下载 MYSQL JDBC 连接器并将其添加到 SPARK CLASSPATH。 运行此命令 bin/compute-classpath.sh
    并为以下脚本添加以下行。

    CLASSPATH=”$CLASSPATH:$PATH_TO_mysql-connector-java-5.1.10.jar
    

    如何将数据从 HIVE 检索到 SPARK....

    第 1 步:
    通过以下命令启动所有守护进程....

    start-all.sh
    

    第 2 步:
    通过以下命令启动 hive thrift server 2....

    hive --service hiveserver2 & 
    

    第 3 步:
    通过以下命令启动 spark server....

    start-spark.sh 
    

    最后通过以下命令检查这些是否启动......

    RunJar 
    ResourceManager 
    Master 
    NameNode 
    SecondaryNameNode 
    Worker 
    Jps 
    JobHistoryServer 
    DataNode 
    NodeManager
    

    第 4 步:
    通过以下命令启动master....

    ./sbin/start-master.sh 
    

    要停止 master 使用下面的命令.....

    ./sbin/stop-master.sh
    

    第 5 步:
    打开一个新终端....
    从以下路径开始直线......

    hadoop@localhost:/usr/local/hadoop/hive/bin$ beeline 
    

    在它要求输入之后...传递下面列出的输入....

    !connect jdbc:hive2://localhost:10000 hadoop "" org.apache.hive.jdbc.HiveDriver 
    

    然后通过以下命令设置 SPARK....
    注意:在 conf 文件中设置这些配置,这样就不需要一直运行了......

    set spark.master=spark://localhost:7077; 
    set hive.execution.engines=spark; 
    set spark.executor.memory=2g; // set the memory depends on your server
    set spark.serializer=org.apache.spark.serializer.kryoSerializer; 
    set spark.io.compression.codec=org.apache.spark.io.LZFCompressionCodec; 
    

    在它要求输入之后...传递您要检索数据的查询...并打开浏览器并通过以下命令检查 URL localhost:8080 您可以看到正在运行的作业和已完成URL 中的作业....

    【讨论】:

    • 如果是 CDH(Cloudera 快速启动 VM),只需将 hive-site.xml 复制到 $SPARK_HOME(/etc/alternatives/spark-conf) 并将 MySQL jar 添加到 /etc 的类路径中/alternatives/spark-conf/spark-env.sh。之后为 VM 执行“CTRL+ALT+DEL”,它就会工作。
    猜你喜欢
    • 2017-12-23
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多