X-Pack Spark使用[FAQ]

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 概述 本文主要列出在使用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") \

相关文章
|
弹性计算 分布式计算 NoSQL
X-Pack Spark服务具有以下几个特点:
X-Pack Spark服务具有以下几个特点:
158 0
X-Pack Spark用户手册
概述 Spark是大数据平台的通用计算平台,应用非常广泛。本文主要介绍Spark相关的知识,主要包括:了解Spark,使用Spark,使用Spark过程中遇到的问题FAQ等,谨帮助用户快速的掌握Spark以及如何使用Spark。
3303 0
|
分布式计算 测试技术 分布式数据库
X-Pack Spark归档POLARDB数据做分析
简介 POLARDB数据库是阿里云自研的下一代关系型云数据库,100%兼容MySQL,性能最高是MySQL的6倍,但是随着数据量不断增大,面临着单条SQL无法分析出结果的现状。X-Pack Spark为数据库提供分析引擎,旨在打造数据库闭环,借助X-Pack Spark可以将POLARDB数据归档至列式存储Parquet文件,一条SQL完成复杂数据分析,并将分析结果回流到业务库提供查询。
9145 0
|
分布式计算 DataWorks 网络安全
|
关系型数据库 分布式数据库 分布式计算
最佳实践 | RDS & POLARDB归档到X-Pack Spark计算
部分RDS和POLARDB For MySQL的用户曾遇到如下场景:当一张表的数据达到几千万时,你查询一次所花的时间会变多。 这时候采取水平分表的策略,水平拆分是将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。 本文将介绍如何把这些水平分表的表归档到X-Pack Spark数仓,做统一的大数据计算。
6736 0
|
SQL 存储 分布式计算
X-Pack Spark 访问OSS
简介 对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
1142 0
|
关系型数据库 分布式数据库 PolarDB
RDS&POLARDB归档到X-Pack Spark计算最佳实践
业务背景 对于RDS&POLARDB FOR MYSQL 有些用户场景会遇到,当一张的数据达到几千万时,你查询一次所花的时间会变多。这时候会采取水平分表的策略,水平拆分是将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。
2231 0
|
分布式计算 监控 Spark
X-Pack Spark 监控指标详解
概述 本文主要介绍X-Pack Spark集群监控指标的查看方法。Spark集群对接了Ganglia和云监控。下面分别介绍两者的使用方法。 Ganglia Ganglia是一个分布式监控系统。 Ganglia 入口 打开Spark集群依次进入:数据库连接>UI访问>详细监控UI>Ganglia。
1518 0
如何使用X-Pack Spark的YarnUI、SparkUI、Spark日志、任务运行状况的分析
概述 X-Pack Spark目前是通过Yarn管理资源,在提交Spark 任务后我们经常需要知道任务的运行状况,例如在哪里看日志、怎么查看每个Executor的运行状态、每个task的运行状态,性能瓶颈点在哪里等信息。
3701 0
|
19天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
53 2
ClickHouse与大数据生态集成:Spark & Flink 实战