Spark中有什么区别sortBy和sortByKey功能有什么区别?
我在下面的转换中执行此操作,其中我使用sortBy&sortByKey.两者都给出了相同的结果,然后有什么不同.
val reducedSfpd = sfpd.map(x => (x(col_2),1)).reduceByKey((x,y) => x+y)
val top3Dist = reducedSfpd.sortBy(_._2,false).collect().take(3)
val top3Dist = reducedSfpd.map(x => x.swap).sortByKey(false).take(3)
Run Code Online (Sandbox Code Playgroud)
sortBy && sortByKey之间是否存在性能相关的差异.
事实上,当我使用时,sortBy我正在保存一个通过应用map函数交换'Key - Values'的转换.那为什么sortByKey呢?
我不确定是否可以在Spark中测试RDD。
我见过一篇文章,其中说模拟RDD不是一个好主意。是否有其他方法或最佳做法来测试RDD
在我的应用程序中,我正在创建一个SparkSession对象,然后尝试读取我的属性文件并在运行时设置属性。但它没有选择我在运行时传递的属性。
我正在以 YARN 集群模式提交我的应用程序
这是我在 Trait 中创建的初始 Spark 会话对象
val spark = SparkSession.builder().appName("MyApp").enableHiveSupport().getOrCreate()
Run Code Online (Sandbox Code Playgroud)
然后在对象内部的主函数中,我扩展了这个 Trait,所以我的 spark 会话在 Trait 和我的对象(包含 main)中初始化,我正在设置:
spark.conf.set(spark.sql.hive.convertMetastoreParquet, false)
spark.conf.set(mapreduce.input.fileinputformat.input.dir.recursive,true)
spark.conf.set(spark.dynamicAllocation.enabled, true)
spark.conf.set(spark.shuffle.service.enabled, true)
spark.conf.set(spark.dynamicAllocation.minExecutors,40)
Run Code Online (Sandbox Code Playgroud)
所以理想情况下,我的应用程序必须从 40 个执行程序开始,但它正在启动,然后完全使用默认的 2 个执行程序运行..
我有一个由 7-8 个字段组成的数据集,这些字段的类型为 String、Int 和 Float。
我正在尝试使用以下方法通过编程方法创建架构:
val schema = StructType(header.split(",").map(column => StructField(column, StringType, true)))
Run Code Online (Sandbox Code Playgroud)
然后将其映射到 Row 类型,如:
val dataRdd = datafile.filter(x => x!=header).map(x => x.split(",")).map(col => Row(col(0).trim, col(1).toInt, col(2).toFloat, col(3), col(4) ,col(5), col(6), col(7), col(8)))
Run Code Online (Sandbox Code Playgroud)
但是在我使用 DF.show() 创建 DataFrame 之后,它给出了 Integer 字段的错误。
那么如何在数据集中有多种数据类型的情况下创建这样的模式
我想要月份名称而不是来自 HIVE 中传递的日期的月份编号
我在做
select Month(date_field) from <tablename>;
Run Code Online (Sandbox Code Playgroud)
这给了我一个月数。如何获得月份名称?
我有一个 DataFrame,其中一列有逗号分隔的数据。
例如:数据看起来像这样:[{value:1}, {value:2, value:3}, {some value}, {somevalue, othervalue}]
该列是字符串数据类型。我想将它转换为 List 并应用一些函数。现在我有一个函数可以将字符串列转换为列表和其他应用逻辑。
但是哪个函数会更好和优化,因为我们有 2 个类似的声音函数mapPartitions和foreachPartitions,它是否具有完全相同的性能以及在什么场景下使用哪个?
我有2张地图:
val map1 = Map("col_1" -> "data_1", "col_2" -> "data_2", "col_3" -> "data_3")
val map2 = Map("col_1" -> "myval_1", "col_2" -> "myval_2", "col_3" -> "myval_3")
Run Code Online (Sandbox Code Playgroud)
要求输出:
res = Map("col_1" -> ("data_1", "myval_1"), "col_2" -> ("data_2", "myval_2"),
"col_2" -> ("data_2", "myval_2") )
Run Code Online (Sandbox Code Playgroud)
基本上保持'map1'的键并合并两个映射的值输出必须是元组而不是List或Seq