小编Kaz*_*yur的帖子

使用Spark DataFrame在列上获取不同的值

使用Spark 1.6.1版本我需要在列上获取不同的值,然后在其上执行一些特定的转换.该列包含超过5000万条记录,并且可以变大.
我知道做一个distinct.collect()会把呼叫带回驱动程序.目前我正在执行如下任务,是否有更好的方法?

 import sqlContext.implicits._
 preProcessedData.persist(StorageLevel.MEMORY_AND_DISK_2)

 preProcessedData.select(ApplicationId).distinct.collect().foreach(x => {
   val applicationId = x.getAs[String](ApplicationId)
   val selectedApplicationData = preProcessedData.filter($"$ApplicationId" === applicationId)
   // DO SOME TASK PER applicationId
 })

 preProcessedData.unpersist()  
Run Code Online (Sandbox Code Playgroud)

scala dataframe apache-spark apache-spark-sql spark-dataframe

30
推荐指数
3
解决办法
9万
查看次数

Apache Sqoop 和 Spark

为了将大型 SQL 数据加载到 Spark 进行转换和 ML,以下哪个选项在性能方面更好。
选项 1:使用 Spark SQL JDBC 连接器将 SQLData 直接加载到 Spark。
选项2:使用Sqoop以csv格式将SQLData加载到HDFS,然后使用Spark从HDFS读取数据。

请提出将大型 SQL 数据加载到 Spark 的好方法。

apache-spark apache-spark-sql

3
推荐指数
1
解决办法
8416
查看次数

Spark DataFrames 上的 Cogroup

我有 2 个大数据帧要根据关联键进行合并。使用join需要更长的时间才能完成任务。

我看到cogroup在 Apache Spark中使用优于加入。任何人都可以指出如何cogroup在 DataFrames上使用或建议更好的方法来合并 2 个大型 DataFrames。

谢谢

dataframe apache-spark apache-spark-sql

2
推荐指数
1
解决办法
5648
查看次数