Apache spark 为什么从红移到火花的读取速度如此之慢?
我无法将AWS红移数据读取到Spark群集。读取超时,导致火花作业失败。我使用以下方法将数据检索到数据帧中:Apache spark 为什么从红移到火花的读取速度如此之慢?,apache-spark,Apache Spark,我无法将AWS红移数据读取到Spark群集。读取超时,导致火花作业失败。我使用以下方法将数据检索到数据帧中: def retrieveFromDate(date: String): org.apache.spark.sql.DataFrame = { val query = "tstamp >= '2018-01-01' and tstamp < '2018-01-02'" val predicates = Array[String](query) val
def retrieveFromDate(date: String): org.apache.spark.sql.DataFrame = {
val query = "tstamp >= '2018-01-01' and tstamp < '2018-01-02'"
val predicates = Array[String](query)
val props = new Properties()
props.put("user", "username")
props.put("password", "password")
spark.read
.jdbc(url=jdbcURL,
table="myschema.mytable",
predicates=predicates,
connectionProperties=props)
}
def retrieveFromDate(日期:字符串):org.apache.spark.sql.DataFrame={
val query=“tstamp>='2018-01-01'和tstamp<'2018-01-02'”
val谓词=数组[字符串](查询)
val props=新属性()
道具放置(“用户”、“用户名”)
道具放置(“密码”、“密码”)
spark.read
.jdbc(url=jdbcURL,
table=“myschema.mytable”,
谓词=谓词,
connectionProperties=props)
}
以下直接在SQL中执行的查询快速返回2400万行:
select * from myschema.mytable
WHERE tstamp >= '2018-08-01'
AND tstamp < '2018-08-02';
从myschema.mytable中选择*
其中tstamp>=“2018-08-01”
以及tstamp<'2018-08-02';
在Spark中,当我在数据帧上执行任何操作时,作业都会失败,包括只count
如果我提供了一个额外的谓词,例如指定另一个WHERE
子句,使结果集非常小,那么一切都可以正常工作为什么这个查询在spark中运行得这么慢,而在SQL中却可以正常工作?我能做些什么来将这么大的结果表从红移加载到spark中吗?
我的开发AWS EMR集群包含一个M4.xlarge主机和两个M3.xlarge工人。这意味着每个工人大约有15GB的ram和8个cpu核
>> The read is timing out and causing the spark job to fail
谓词参数只是
val query=“tstamp>='2018-01-01'和tstamp<'2018-01-02'
因此,结果数据帧是单个任务的结果“1”的分区,它容纳2400万。它没有平行性
您能否更改并提供将24M数据划分为多个块的谓词。那么,读可以并行化吗
像这样的,
val query=Arry[String](“列>=value1,列public Dataset<Row> jdbc(String url,
String table,
String columnName,
long lowerBound,
long upperBound,
int numPartitions,
java.util.Properties connectionProperties)
公共数据集jdbc(字符串url,
字符串表,
字符串列名称,
长的下半身,
长上界,
国际货币基金组织,
java.util.Properties(连接属性)
更多细节