는 SqlContext 사용
, 스칼라 프로젝트를 만듭니다 마스터 클래스 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()
}
사용은 프로젝트 루트 디렉토리를 컴파일 받는다는
mvn package -Dmaven.test.skip=true
서버 lib 디렉토리에 업로드 프로젝트 대상 디렉토리 항아리 패키지를 컴파일, 내가 컴파일 된 파일은 sparksql 프로젝트-1.0.jar입니다
소프트웨어 디렉토리에 업로드 MySQL의 툴킷 MySQL의 커넥터 - 자바-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()
}
사용은 프로젝트 루트 디렉토리를 컴파일 받는다는
mvn package -Dmaven.test.skip=true
서버 lib 디렉토리에 업로드 프로젝트 대상 디렉토리 항아리 패키지를 컴파일, 내가 컴파일 된 파일은 sparksql 프로젝트-1.0.jar입니다
소프트웨어 디렉토리에 업로드 MySQL의 툴킷 MySQL의 커넥터 - 자바-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()
}