ハイブからスパークへの移行SQL

SQLContext使用

Scalaのプロジェクトを作成し、マスタークラスSQLContextAppを作成

package com.yy.spark

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SQLContext

/**
 * SQLContext的使用
 * Spark 1.x使用
 */
 object SQLContextApp extends App {

  var path = args(0)

  //创建相应的Context
  val sparkConf = new SparkConf()
  //在测试或者生产中,AppName和Master通过脚本进行指定,本地开发环境可以如下写法
  //sparkConf.setAppName("SQLContextApp").setMaster("local[2]")  
  val sparkContext = new SparkContext()
  val sqlContext = new SQLContext(sparkContext)

  //2)相关处理
  val people = sqlContext.read.format("json").load(path)
  people.printSchema()
  people.show()

  //3)关闭资源
  sparkContext.stop()
}

環境に提出スパークアプリケーションを実行する
サーバーで次のコマンドを

$ spark-submit \
--class com.yy.spark.SQLContextApp \
--master local[2] \
/home/hadoop/lib/sparksql-project-1.0.jar \
/home/hadoop/app/spark-2.2.0-bin-hadoop2.6/examples/src/main/resources/people.json

シェルスクリプトを実行することにより
、シェルファイル1)を作成するために、文は単にファイルsqlcontext.shを貼り付け実行されます

$ vim sqlcontext.sh

spark-submit \
--name SQLContextApp \
--class com.yy.spark.SQLContextApp \
--master local[2] \
/home/hadoop/lib/sparksql-project-1.0.jar \
/home/hadoop/app/spark-2.2.0-bin-hadoop2.6/examples/src/main/resources/people.json

2)許可を与えます

$ chmod u+x sqlcontext.sh

3)実行

$ ./sqlcontext.sh

HiveCntext使用

使用するとHiveContext、既にインストールされているハイブ環境を必要としません。ハイブ-site.xmlにはする必要がある
confディレクトリを刺激するためにハイブ-site.xmlの下のconfディレクトリのフォルダの下にハイブをコピーします

$ cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf

HiveContextApp、次のコードを作成します

package com.yy.spark

import org.apache.spark.sql.hive.HiveContext
import org.apache.spark.{SparkConf, SparkContext}

/**
 * HiveContext的使用
 * Spark 1.x使用
 */
 object HiveContextApp extends App {

  //创建相应的Context
  val sparkConf = new SparkConf()
  val sparkContext = new SparkContext()
  val hiveContext = new HiveContext(sparkContext)

  //2)相关处理
  hiveContext.table("emp").show()

  //3)关闭资源
  sparkContext.stop()

}

使用して、プロジェクトのルートディレクトリをコンパイルMavenの

mvn package -Dmaven.test.skip=true

サーバーlibディレクトリにアップロードされたプロジェクトのターゲットディレクトリのjarパッケージのコンパイル、私はコンパイル済みのファイルがsparksqlプロジェクト-1.0.jarである
ソフトウェアのディレクトリにアップロードmysqlのツールキットのmysql-コネクタ-javaの-5.1.45.jar

スクリプトエディタのhivecontext.sh

$ vim hivecontext.sh

spark-submit \
--class com.yy.spark.HiveContextApp \
--master local[2] \
--jars /home/hadoop/software/mysql-connector-java-5.1.45.jar \
/home/hadoop/lib/sparksql-project-1.0.jar

スクリプトを実行し、許可を与えます

$ chmod u+x sqlcontext.sh
$ ./hivecontext.sh

SparkSessionの使用

ここでは例えば、ハイブを読み取ります

confディレクトリを刺激するためにハイブ-site.xmlの下ハイブフォルダの下のconfディレクトリをコピーします。

$ cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf

SparkSessionApp、次のコードを作成します

package com.yy.spark

import org.apache.spark.sql.SparkSession

/**
 * SparkSession使用
 * Spark 2.x
 */
object SparkSessionApp extends App {

  //读取本地文件
//  var path = args(0)
//  val spark = SparkSession.builder().appName("SparkSessionApp").master("local[2]").getOrCreate()
//  val people = spark.read.json(path)
//  people.show()
//  spark.stop()

  //读取Hive
  val sparkHive = SparkSession.builder().appName("HiveSparkSessionApp").master("local[2]").enableHiveSupport().getOrCreate()
  //加载hive表
  val emp = sparkHive.table("emp")
  emp.show()
  //关闭
  sparkHive.stop()

}

使用して、プロジェクトのルートディレクトリをコンパイルMavenの

mvn package -Dmaven.test.skip=true

サーバーlibディレクトリにアップロードされたプロジェクトのターゲットディレクトリのjarパッケージのコンパイル、私はコンパイル済みのファイルがsparksqlプロジェクト-1.0.jarである
ソフトウェアのディレクトリにアップロードmysqlのツールキットのmysql-コネクタ-javaの-5.1.45.jar

スクリプトエディタのhivecontext.sh

$ vim hivecontext.sh

spark-submit \
--class com.yy.spark.SparkSessionApp \
--master local[2] \
--jars /home/hadoop/software/mysql-connector-java-5.1.45.jar \
/home/hadoop/lib/sparksql-project-1.0.jar

スクリプトを実行し、許可を与えます

$ chmod u+x sqlcontext.sh
$ ./hivecontext.sh

使用の火花シェル&スパーク-SQL

あなたはハイブを使用する場合は、前提はまた、confディレクトリを刺激するためにハイブ-site.xmlにコピーする必要があります

cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf

スパーク・シェル

$ ./spark-shell --master local[2] --jars ~/software/mysql-connector-java-5.1.45.jar

# 查看hive中所有表
scala> spark.sql("show tables").show
+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
| default|      emp|      false|
+--------+---------+-----------+

# 查看emp表数据
scala> spark.sql("select * from emp").show

火花-SQL

使用火花-SQLのSQLステートメントは、コンソールに直接書き込むことができます

$ ./spark-sql --master local[2] --jars ~/software/mysql-connector-java-5.1.45.jar

# 查看hive中所有表
spark-sql> show tables;

# 查看emp表数据
spark-sql> select * from emp;

thriftserver&ビーラインの使用

thriftserver起動し、

$ cd $SPARK_HOME/sbin
$ ./start-thriftserver.sh --master local[2] --jars ~/software/mysql-connector-java-5.1.45.jar

デフォルトポート10000は、パラメータを指定することで変更することができます

./sbin/start-thriftserver.sh \
  --master local[2] \
  --jars ~/software/mysql-connector-java-5.1.45.jar \
  --hiveconf hive.server2.thrift.port=14000

スタートビーラインは、-uはthriftserverアドレス、-nサーバーのユーザー名を指し、

$ cd $SPARK_HOME/bin
$ ./beeline -u jdbc:hive2://localhost:10000 -n hadoop
0: jdbc:hive2://localhost:10000> show tables;
0: jdbc:hive2://localhost:10000> select * from emp;

差とのスパークシェル/スパーク-SQL Thriftserver

1)火花シェル、火花防止 SQL、 スパークアプリケーションの起動である各々が
アプリケーション・サーバ・リソースは、単に起動時2)thriftserverアプリケーションは、多くのクライアント(ビーライン/コード)が開始どんなには、スパーク・アプリケーションであります一度、データ共有の問題を解決するため、複数のクライアントがデータを共有することができます。

アクセスプログラミングへのJDBC道

JDBC開発を使用する場合は、最初のthriftserver開始

pom.xmlに依存関係を紹介

<dependency>
  <groupId>org.spark-project.hive</groupId>
  <artifactId>hive-jdbc</artifactId>
  <version>1.2.1.spark2</version>
</dependency>

JDBCアクセスコードは次のようです

package com.yy.spark

import java.sql.DriverManager

/**
 * 通过JDBC访问
 */
object SparkSQLThriftServerApp extends App {

  Class.forName("org.apache.hive.jdbc.HiveDriver")

  val conn = DriverManager.getConnection("jdbc:hive2://hadoop000:10000", "hadoop", "")
  val pstmt = conn.prepareStatement("select empno,ename,salary from emp")
  val rs = pstmt.executeQuery()
  while (rs.next()) {
    println("empno:" + rs.getInt("empno") + ", ename:"+rs.getString("ename")
      + ", salary:"+rs.getDouble("salary"))
  }
  rs.close()
  pstmt.close()
  conn.close()
}

おすすめ

転載: www.cnblogs.com/yanceyy/p/11978457.html