开发者社区> 云hbase+spark> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

X-Pack Spark使用[FAQ]

简介: 概述 本文主要列出在使用X-Pack Spark的FAQ。 Spark Connectors 主要列举Spark 对接其它数据源遇到的问题 Spark on HBase Spark on HBase Connector:如何在Spark侧设置HBase参数。
+关注继续查看

概述

本文主要列出在使用X-Pack Spark的FAQ。

同步Dataworks数据到X-pack Spark hdfs

请参考:如何同步Dataworks数据到X-pack Spark hdfs

Spark服务使用问题

1. X-Pack Spark如何监控核心指标
答:x-pack spark如何监控核心指标X-Pack Spark 监控指标详解

2. 通过数据工作台上传资源文件慢
答:这个主要取决于用户的上行带宽,如果上行带宽无法调整,可以使用vpc内网通过hdfs上传httpfs上传

3. X-Pack Spark yarn任务数超过9999查看方法
答:https://developer.aliyun.com/ask/139396

4. X-Pack Spark 集群如何访问外网数据接口
答:Spark集群默认不能访问外网,可以通过NAT网关的方式访问。具体开通方式请参考:NAT网关

Spark Connectors

主要列举Spark 对接其它数据源遇到的问题

Spark on HBase

1. Spark on HBase Connector:如何在Spark侧设置HBase参数
答:https://yq.aliyun.com/articles/710584/

Spark on Phoenix

1. Spark on Phoenix 4.x Connector:如何在Spark侧设置Phoenix参数
答:https://yq.aliyun.com/articles/710257/

Spark SQL

主要列出Spark SQL相关的。

1. spark 2.4.3以上版本thriftserver对于data类型的字段作为分区,查询不到数据?
答:在查询的时候需要对“2019-06-23”这样的字符串条件过滤使用date做转换

2. spark SQL 保存结果时如何设置并行度
答:如果使用 Spark 默认的并行度可能会导致 Spark SQL 运行的结果文件产生大量的小文件。一种简单的方法是在保存结果的过程中手动设置并行度。在 Spark 2.4 之前是不支持在 SQL 中设置并行度的,如果你使用 Spark 2.4,可以在 SQL 中使用 Repartition Hint,比如

spark.sql("create table test as select /*+ REPARTITION(4) */ age,count(*) from person where age between 10 and 20 group by age")

spark.sql("insert overwrite test as select /*+ REPARTITION(4) */ age,count(*) from person where age between 10 and 20 group by age")

注意:这种方法设置并行度并不是对如何场景都合适的,最好的办法是提前计算好结果文件的大小,然后每个文件保存多大,再算出一个并行度。

3. Spark 查询 MySQL、Phoenix等数据库时过滤条件如何下推?
比如我们使用 Spark 的 JDBC 查询 MySQL 的数据有如下的过滤条件

scala> mysql.filter("times1 >= '2019-06-20 00:00:00' and times1 < '2019-06-20 01:00:10'").explain 
== Physical Plan == 
*(1) Filter ((cast(TIMES1#129 as string) >= 2019-06-20 00:00:00) && (cast(TIMES1#129 as string) < 2019-06-20 01:00:10)) 
+- *(1) Scan JDBCRelation(test) [numPartitions=1][ID#126L,IP#127,count#128L,TIMES1#129,TOTAL#130L,TIMES2#131,TIMES3#132,TIME4#133] PushedFilters: [*IsNotNull(TIMES1)], ReadSchema: struct<ID:bigint,IP:string,count:bigint,TIMES1:timestamp,TOTAL:bigint,TIMES2:date,TIMES3:string,T... 

从上面的例子可以看出,过滤条件其实是没有下推的,这样的话查询性能非常差,我们可以如下修改:

scala> mysql.filter("times1 >= to_timestamp('2019-06-20 00:00:00') and times1 < to_timestamp('2019-06-20 01:00:10')").explain 
== Physical Plan == 
*(1) Scan JDBCRelation(test) [numPartitions=1][ID#126L,IP#127,count#128L,TIMES1#129,TOTAL#130L,TIMES2#131,TIMES3#132,TIME4#133] PushedFilters: [*IsNotNull(TIMES1), *GreaterThanOrEqual(TIMES,2019-06-20 00:00:00.0), *LessThan(TIMES,2019-06-20 ..., ReadSchema: struct<ID:bigint,IP:string,count:bigint,TIMES1:timestamp,TOTAL:bigint,TIMES2:date,TIMES3:string,T... 

SparkStreming

1. SparkStreming使用Checkpoint创建StreamingContext修改executor-cores、executor-memory等资源信息不生效。
答:使用StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext _)创建StreamingContext会从Checkpoint路径中读取Spark的配置信息,不会从控制台读取。所以如果要更改Spark配置信息需要清除Checkpoint路径中的内容或者更改Checkpoint路径。详细原因请参考:详细原因

2. SparkStreaming使用kafka 0.10.0.0客户端版本对接kafka会出现批次处理时间抖动、不稳定情况。
答:比如正常每个批次3秒可以处理完毕,运行一段时间后会出现10秒才能处理完毕,然后可能会出现大量的10秒处理批次,导致批次堆积无法处理。需要使用kafka 0.10.2.2版本可解决问题。点击kafka-clients-0.10.2.2.jar下载。

Spark作业运行

** 1. pyspark通过--jars添加了依赖的mysql-jdbc的包,但是还是出现 ”: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver“
答:pyspark的作业对于spark-submit提交脚本,需要--jars等参数在xxx.py之前,而不是之后

** 2. spark对接mysql等,--jars添加了mysql-connector-xx.jar,但是还是出现” No suitable driver“
答:需要在代码中添加使用的driver的类 .option("driver", "com.mysql.jdbc.Driver") \

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
谢钧棋:以“数”转型 用“脉”管理 | 阿里CIO学院名人堂
8月20日-21日,蒂脉科技创始人谢钧棋董事长(花名:科技皇后)作为中国中小企业协会金融科技分会的学员代表,受邀参加了由阿里CIO学院举办32期走进阿里活动,为期两天的交流使她深切直观地学习了阿里巴巴集团的企业文化与价值观,了解了阿里有关数字化转型的理念和最佳实践。
3107 0
使用alarm API实现灵活的延时操作
作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 在linux系统中的daemon,大都有reload configuration的功能,一般情况下通过发送SIGHUP给服务daemon,可以使daemon重新读取其配置文件,如Free Radius。
1018 0
使用篇-基于Laravel开发博客应用系列 —— 使用Bower+Gulp集成前端资源
安装 Bower 由于 Bower 基于 Node.js,所以需要使用 npm 全局安装 Bower(这一步我们在之前设置本地开发环境里已经执行过): sudo npm install -g bower 接下来在博客项目根目录下创建.bowerrc文件,这是可选的,这样做的目的是为了告诉 Bower 所有下载的文件都会存放到vendor目录下,如果跳过这一步,Bower 将在项目根目录下创建一个bower_dl目录用于存放下载文件。
882 0
spring 3.2.x + struts2 + mybatis 3.x + logback 整合配置
与前面的一篇mybatis 3.2.7 与 spring mvc 3.x、logback整合 相比,只是web层的MVC前端框架,从spring mvc转换成struts 2.x系列,变化并不大 一、pom.
1040 0
struts2和spring mvc混合使用
     最近有个需求,就是把目前的项目由struts2平滑切换到spring mvc。网上貌似这个资料不是很多,不知道是太简单了,还是没有这种需求。东拼西凑的算是搞定了。分享一下,欢迎拍砖。
994 0
Spring2.x中设置Bean的作用域
在配置文件里声明的Bean时,实际定义的并不是一个Bean实例,而是为Bean创建了一个模板,当通过getBean()调用或其他请求改Bean的时候,Spring将根据Bean的实际作用域返回Bean的实例,在某些情况下默认的作用域并不适合,此时需要为Bean设置一个更适合的作用域。
896 0
36
文章
58
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载