更新时间:2024-10-23 GMT+08:00

通过JDBC访问Spark SQL样例程序开发思路

场景说明

用户自定义JDBCServer的客户端,使用JDBC连接来进行表的创建、数据加载、查询和删除。

数据规划

将数据文件上传至HDFS中。

  1. 确保以多主实例模式启动了JDBCServer服务,并至少有一个实例可连接客户端。在Linux系统HDFS客户端新建一个文本文件“data”,内容如下:

    Miranda,32
    Karlie,23
    Candice,27

  2. 在HDFS路径下建立一个目录,例如创建“/home”,并上传“data”文件到此目录,命令如下:

    1. 登录HDFS客户端节点,执行如下命令:

      cd{客户端安装目录}

      sourcebigdata_env

      kinit<用于认证的业务用户>

    2. 执行如下命令创建目录“/home”。

      hdfs dfs -mkdir /home

    3. 执行如下命令上传数据文件。

      hdfs dfs -put data /home

  3. 确保其对启动JDBCServer的用户有读写权限。
  4. 确保客户端classpath下有“hive-site.xml”文件,且根据实际集群情况配置所需要的参数。JDBCServer相关参数详情,请参见Spark JDBCServer接口介绍

开发思路

  1. 在default数据库下创建child表。
  2. “/home/data”的数据加载进child表中。
  3. 查询child表中的数据。
  4. 删除child表。

运行前置操作

安全模式下Spark Core样例代码需要读取两个文件(user.keytab、krb5.conf)。user.keytab和krb5.conf文件为安全模式下的认证文件,需要在FusionInsight Manager中下载principal用户的认证凭证,样例代码中使用的用户为:sparkuser,需要修改为准备好的开发用户。

打包项目

  • 将krb5.conf和user.keytab文件上传到客户端所在服务器上。
  • 通过IDEA自带的Maven工具,打包项目,生成jar包。具体操作请参考在Linux环境中编包并运行Spark程序

    编译打包前,样例代码中的user.keytab、krb5.conf文件路径需要修改为该文件所在客户端服务器的实际路径。例如:“/opt/female/user.keytab”,“/opt/female/krb5.conf”。

  • 将打包生成的jar包上传到Spark客户端所在服务器的任意目录(例如“ /opt/female/” )下。

运行任务

进入Spark客户端目录,使用java -cp命令运行代码(类名与文件名等请与实际代码保持一致,此处仅为示例):

  • 运行Java样例代码:

    java -cp $SPARK_HOME/jars/*:$SPARK_HOME/jars/hive/*:$SPARK_HOME/conf:/opt/female/SparkThriftServerJavaExample-1.0.jar com.huawei.bigdata.spark.examples.ThriftServerQueriesTest $SPARK_HOME/conf/hive-site.xml $SPARK_HOME/conf/spark-defaults.conf

  • 运行Scala样例代码:

    java -cp $SPARK_HOME/jars/*:$SPARK_HOME/jars/hive/*:$SPARK_HOME/conf:/opt/female/SparkThriftServerExample-1.0.jar com.huawei.bigdata.spark.examples.ThriftServerQueriesTest $SPARK_HOME/conf/hive-site.xml $SPARK_HOME/conf/spark-defaults.conf

    集群开启ZooKeeper的SSL特性后(查看ZooKeeper服务的ssl.enabled参数),请在执行命令中添加-Dzookeeper.client.secure=true -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty两项参数:

    java -Dzookeeper.client.secure=true -Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty -cp $SPARK_HOME/jars/*:$SPARK_HOME/jars/hive/*:$SPARK_HOME/conf:/opt/female/SparkThriftServerJavaExample-1.0.jar com.huawei.bigdata.spark.examples.ThriftServerQueriesTest $SPARK_HOME/conf/hive-site.xml $SPARK_HOME/conf/spark-defaults.conf