- 浏览: 125458 次
- 性别:
- 来自: 杭州
文章分类
最新评论
export SPARK_CONF_DIR=/home/yunzhi.lyz/spark/spark220/conf
spark-default.conf
spark.yarn.jars hdfs:/app/jars/*.jar # hdfs jar, 每次 submit ,如果 spark/jars 下面 jar 和 HDFS 上一样,用 HDFS上的,优先用 driver 上的jar
spark.app.confpath /udfconf/udf.config # hdfs 配置
start-thriftserver.sh 一定要用 client 模式 , 而 client模式, 一定要通过 --driver-class-path $CLASSPATH:/home/...SNAPSHOT.jar 来加载 driver上的 classpath
加入 --driver-class-path 的jar ,最终在 java command 中 会出现在 java -cp 后面。 这样 java driver 才能加载到。
spark.driver.extraClassPath 对 client 是无效的
worker 上的 spark.executor.extraClassPath 配置 , 测试 --jars 也是可用的。
val configFilePath = sparkConf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"configFilePath SparkSQLEnv : $configFilePath ")
object UdfLoadUtils {
var configArray :Array[String] = null
def udfRegister(configFilePath: String, spark: SparkSession): Unit = {
if(configArray ==null) configArray = spark.sparkContext.textFile(configFilePath, 1).collect()
// name,classname,returnType(udf need)
configArray.foreach(record => {
val registerInfoArray = record.split(",")
println(s"register udf info : $record")
if (registerInfoArray.size == 2) {
val Array(udfName,className) = registerInfoArray
val instance = getUDAFInstanceByClass(className)
spark.sqlContext.udf.register(udfName, instance)
} else if (registerInfoArray.size == 3) {
val Array(udfName,className,returnType) = registerInfoArray
var returnDataType : DataType = null
returnType match{
// Numeric types
case "ByteType" => returnDataType = DataTypes.ByteType
case "ShortType" => returnDataType = DataTypes.ShortType
case "IntegerType" => returnDataType = DataTypes.IntegerType
case "LongType" => returnDataType = DataTypes.LongType
case "FloatType" => returnDataType = DataTypes.FloatType
case "DoubleType" => returnDataType = DataTypes.DoubleType
//case "DecimalType" => returnDataType = DecimalType
// String types
case "StringType" => returnDataType = DataTypes.StringType
// Binary type
case "BinaryType" => returnDataType = DataTypes.BinaryType
// Boolean type
case "BooleanType" => returnDataType = DataTypes.BooleanType
// Datetime type
case "TimestampType" => returnDataType = DataTypes.TimestampType
case "DateType" => returnDataType = DataTypes.DateType
// Complex types
//case "ArrayType" => returnDataType = ArrayType
//case "MapType" => returnDataType = MapType
//case "StructType" => returnDataType = StructType
case _ => None
}
spark.sqlContext.udf.registerJava(udfName,className,returnDataType)
}
})
}
def getUDAFInstanceByClass(className: String) :UserDefinedAggregateFunction= {
var instance : UserDefinedAggregateFunction = null
try {
instance = Class.forName(className).newInstance.asInstanceOf[UserDefinedAggregateFunction]
}catch{
case ex:Throwable => {
println(s" instance $className error ,error info : ${ex.getCause} ...................... ")
ex.printStackTrace()
}
}
instance
}
}
thriftserver
org.apache.spark.sql.hive.thriftserver.SparkSQLEnv#init
val configFilePath = sparkConf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"configFilePath SparkSQLEnv : $configFilePath ")
UdfLoadUtils.udfRegister(configFilePath,sparkSession)
org.apache.spark.sql.hive.thriftserver.SparkSQLSessionManager#openSession
println(s" open session : single ${sqlContext.conf.hiveThriftServerSingleSession} ")
val ctx = if (sqlContext.conf.hiveThriftServerSingleSession) {
sqlContext
} else {
sqlContext.newSession()
}
if(!sqlContext.conf.hiveThriftServerSingleSession){
val configFilePath = ctx.sparkContext.conf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"openSession configFilePath: $configFilePath ")
UdfLoadUtils.udfRegister(configFilePath,ctx.sparkSession)
}
ctx.setConf("spark.sql.hive.version", HiveUtils.hiveExecutionVersion)
spark-default.conf
spark.yarn.jars hdfs:/app/jars/*.jar # hdfs jar, 每次 submit ,如果 spark/jars 下面 jar 和 HDFS 上一样,用 HDFS上的,优先用 driver 上的jar
spark.app.confpath /udfconf/udf.config # hdfs 配置
start-thriftserver.sh 一定要用 client 模式 , 而 client模式, 一定要通过 --driver-class-path $CLASSPATH:/home/...SNAPSHOT.jar 来加载 driver上的 classpath
加入 --driver-class-path 的jar ,最终在 java command 中 会出现在 java -cp 后面。 这样 java driver 才能加载到。
spark.driver.extraClassPath 对 client 是无效的
worker 上的 spark.executor.extraClassPath 配置 , 测试 --jars 也是可用的。
val configFilePath = sparkConf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"configFilePath SparkSQLEnv : $configFilePath ")
object UdfLoadUtils {
var configArray :Array[String] = null
def udfRegister(configFilePath: String, spark: SparkSession): Unit = {
if(configArray ==null) configArray = spark.sparkContext.textFile(configFilePath, 1).collect()
// name,classname,returnType(udf need)
configArray.foreach(record => {
val registerInfoArray = record.split(",")
println(s"register udf info : $record")
if (registerInfoArray.size == 2) {
val Array(udfName,className) = registerInfoArray
val instance = getUDAFInstanceByClass(className)
spark.sqlContext.udf.register(udfName, instance)
} else if (registerInfoArray.size == 3) {
val Array(udfName,className,returnType) = registerInfoArray
var returnDataType : DataType = null
returnType match{
// Numeric types
case "ByteType" => returnDataType = DataTypes.ByteType
case "ShortType" => returnDataType = DataTypes.ShortType
case "IntegerType" => returnDataType = DataTypes.IntegerType
case "LongType" => returnDataType = DataTypes.LongType
case "FloatType" => returnDataType = DataTypes.FloatType
case "DoubleType" => returnDataType = DataTypes.DoubleType
//case "DecimalType" => returnDataType = DecimalType
// String types
case "StringType" => returnDataType = DataTypes.StringType
// Binary type
case "BinaryType" => returnDataType = DataTypes.BinaryType
// Boolean type
case "BooleanType" => returnDataType = DataTypes.BooleanType
// Datetime type
case "TimestampType" => returnDataType = DataTypes.TimestampType
case "DateType" => returnDataType = DataTypes.DateType
// Complex types
//case "ArrayType" => returnDataType = ArrayType
//case "MapType" => returnDataType = MapType
//case "StructType" => returnDataType = StructType
case _ => None
}
spark.sqlContext.udf.registerJava(udfName,className,returnDataType)
}
})
}
def getUDAFInstanceByClass(className: String) :UserDefinedAggregateFunction= {
var instance : UserDefinedAggregateFunction = null
try {
instance = Class.forName(className).newInstance.asInstanceOf[UserDefinedAggregateFunction]
}catch{
case ex:Throwable => {
println(s" instance $className error ,error info : ${ex.getCause} ...................... ")
ex.printStackTrace()
}
}
instance
}
}
thriftserver
org.apache.spark.sql.hive.thriftserver.SparkSQLEnv#init
val configFilePath = sparkConf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"configFilePath SparkSQLEnv : $configFilePath ")
UdfLoadUtils.udfRegister(configFilePath,sparkSession)
org.apache.spark.sql.hive.thriftserver.SparkSQLSessionManager#openSession
println(s" open session : single ${sqlContext.conf.hiveThriftServerSingleSession} ")
val ctx = if (sqlContext.conf.hiveThriftServerSingleSession) {
sqlContext
} else {
sqlContext.newSession()
}
if(!sqlContext.conf.hiveThriftServerSingleSession){
val configFilePath = ctx.sparkContext.conf.getOption("spark.app.confpath")
.getOrElse("/Users/l/spark/git/spark/sql/hive-thriftserver/conf-file/udf.config")
println(s"openSession configFilePath: $configFilePath ")
UdfLoadUtils.udfRegister(configFilePath,ctx.sparkSession)
}
ctx.setConf("spark.sql.hive.version", HiveUtils.hiveExecutionVersion)
发表评论
-
Spark SQL运行 过程 抄的别人的,记录 学习
2018-05-13 23:07 1035抄的别人的,觉得写的特别好 val FILESOURCE ... -
thriftserver log4j.properties 生效
2018-04-09 11:46 453/home/isuhadoop/spark2/sbin/sta ... -
udaf 返回的 子属性
2018-03-20 13:22 445udaf 返回的 子属性 spark.sql(" ... -
spark datasource
2018-03-16 16:36 669DataFrameWriter format val c ... -
如何 map 端 Join。
2018-03-04 19:31 628Hive 中 修改表的 rawDataSize = 1 1 ... -
spark thrift server 修改
2018-03-04 12:58 587org.apache.spark.sql.hive.thrif ... -
hive hbase thriftserver run
2018-03-03 15:13 415正确方法 : 0\ 拷贝对应目录到 spark2 jars ... -
scala package
2018-01-25 09:48 534#scala 打包 mvn clean scala:com ... -
SPARK SERVER
2018-01-23 22:15 556sbin/start-thriftserver.sh --dr ... -
driver class
2018-01-21 22:11 525sbin/start-thriftserver.sh -- ... -
spark thrift server 调试
2017-10-20 15:50 868spark-hive-thriftserver 本地调试 ... -
spark SQL conf
2017-10-18 14:36 625org.apache.spark.sql.internal.S ... -
java 死锁 ,内存问题 分析
2017-10-17 10:50 351jstack -l pid /opt/soft/jdk/ ... -
thriftServer proxy
2017-10-16 14:21 947sudo yum install haproxy 257 ... -
hive spark conf
2017-09-26 17:44 1299CREATE TABLE org_userbehavior_a ... -
get day
2017-09-19 08:41 572def timeDayNow() = { var ... -
thriftserver dynamicallocation
2017-09-08 14:41 591./sbin/start-thriftserver.sh -- ... -
test code2
2017-09-03 13:45 492package org.test.udf import co ... -
test code
2017-08-24 17:52 291def taskcal(data:Array[(String, ... -
struct streaming SQL udf udaf
2017-08-22 11:50 682spark aggregator class H ...
相关推荐
spark-hive-thriftserver_2.11-2.1.spark-hive-thrift
spark-hive_2.11-2.3.0...spark-hive-thriftserver_2.11-2.3.0.jar log4j-2.15.0.jar slf4j-api-1.7.7.jar slf4j-log4j12-1.7.25.jar curator-client-2.4.0.jar curator-framework-2.4.0.jar curator-recipes-2.4.0.jar
spark和hive结合依赖,如何使用请看我博客https://blog.csdn.net/z1987865446/article/details/109372818
本设计源码提供了一个基于Scala的Spark Thrift Server。项目包含12731个文件,主要使用Scala、Java、Python、Shell、JavaScript、CSS、HTML、Ruby和C编程语言。文件类型包括3539个Scala源代码文件、1559个Q文件、...
**SparkSQL的分布式执行引擎——Spark ThriftServer详解** SparkSQL是Apache Spark项目的一个核心组件,它提供了对结构化数据的处理能力,使得用户可以使用SQL或者DataFrame/Dataset API进行数据查询和分析。Spark ...
支持mysql8.x,使用utf8mb4编码。
标题中的“【Hue警告】必须在 HBase 服务中配置 Thrift Server 角色以使用 Hue HBase Browser 应用程序”指出了一个关键的问题,即为了能够通过Hue UI界面顺利地浏览和操作HBase数据库,需要在HBase服务中设置Thrift...
标题中的“thrift server support db operation and rest protocol”指出,我们正在讨论一个经过修改的Thrift服务器,它扩展了对数据库操作的支持,并且实现了REST协议。这个服务器现在能够处理HTTP请求,内容格式为...
Thrift 是一个高性能的跨语言服务开发框架,最初由 Facebook 开发并开源。它通过接口定义语言(IDL)来定义数据类型和服务,使得不同语言之间能够进行高效且可靠的通信。Thrift IDL 文件被编译成多种编程语言的代码...
`goshine` 是一个专为 Apache Spark Thrift Server 设计的 Go 语言客户端库,它使得在 Go 应用程序中与 Spark 进行交互变得更加便捷。Spark Thrift Server 提供了一个 JDBC/ODBC 接口,允许各种编程语言通过标准的 ...
一组用thrift写的Java RPC框架,是两个maven项目,直接可以用,可以传字符串。 方便初学者了解thrift RPC各部分的原理,如果想自己加功能,就要新建XX.thrift文件,定义好接口,用用thrift生成
Ambari+Bigtop 一站式编译和部署解决方案 https://gitee.com/tt-bigdata/ambari-env
蜜蜂用于R的Hive客户端,它也与Spark的ThriftServer兼容。 与其他此类库不同,Bee不需要运行rJava,客户端JVM或任何其他服务。 Bee通过C ++节俭库与HiveServer交互,从而使客户端依赖性最小化,并且处理速度很快。...
thrift框架通过vs2013编译好的静态库,然后通过vs2013实现双向通信代码,通信协议利用openssl加密证书的方式来实现,本资源给出了完整的实现代码,证书可以在网上百度一下,看看如何生成客户端和服务端的,然后编译...
1. **验证HBase和ThriftServer状态**: 确保HBase正常工作,检查thriftserver的9090端口是否在监听,如需启动ThriftServer,可以使用`bin/hbase-daemon.sh start thrift`命令。 2. **编写和编译测试程序**: 创建一个...
《PyHS2:Python连接Hive与Spark Thrift Server的利器》 PyHS2,一个在Python编程环境中用于连接Hive Server和Spark Thrift Server的客户端库,为开发者提供了便捷的方式来执行HQL(Hive查询语言)并获取数据。这个...
4. **启动服务器**:使用生成的`ThriftServer.java`(或者自定义服务器),创建一个Thrift服务器实例,监听特定端口并处理客户端请求: ```java public class ThriftServer { public static void main(String[] ...
- **Thrift Gateway**: 支持多种语言(如C++、PHP、Python等),便于异构系统的集成。 - **REST Gateway**: 支持HTTP RESTful API,允许任何支持HTTP协议的客户端访问HBase。 - **Pig和Hive**: 提供高级语言支持,...
- **ThriftServer命令参数**:列举了ThriftServer可用的命令参数。 - **ThriftServer使用**:指导如何使用ThriftServer。 **7.3 小结** - 对ThriftServer和CLI的使用进行了总结。 #### 八、SparkSQL的综合应用 ...
<bean id="thriftServer" class="org.springframework.contrib.thrift.server.ThriftServerFactoryBean"> <bean id="thriftServiceProcessor" class="org.apache.thrift.server.TThreadPoolServer$Args"> ...