我正在处理poc,我需要在其中创建数据帧,然后将其保存为ctrl分隔的文件。下面是我创建中间结果的查询
val grouped = results.groupBy("club_data","student_id_add","student_id").agg(sum(results("amount").cast(IntegerType)).as("amount"),count("amount").as("cnt")).filter((length(trim($"student_id")) > 1) && ($"student_id").isNotNull)
将结果保存在文本文件中
grouped.select($"club_data", $"student_id_add", $"amount",$"cnt").rdd.saveAsTextFile("/amit/spark/output4/")
输出:
[amit,DI^A356035,581,1]
它将数据保存为逗号分隔,但我需要将其保存为ctrl-A单独我尝试了选项(“分隔符”、“\u0001”),但它似乎不受dataframe/rdd的支持。
有什么帮助的功能吗?
保存前将行转换为文本:
grouped.select($"club_data", $"student_id_add", $"amount",$"cnt").map(row => row.mkString(\u0001")).saveAsTextFile("/amit/spark/output4/")
df.rdd.map(x=>x.mkString("^A")).saveAsTextFile("file:/home/iot/data/stackOver")
如果您有一个数据帧,您可以使用Spark CSV作为CSV写入,并使用以下分隔符。
df.write.mode(SaveMode.Overwrite).option("delimiter", "\u0001").csv("outputCSV")
使用旧版本的Spark
df.write
.format("com.databricks.spark.csv")
.option("delimiter", "\u0001")
.mode(SaveMode.Overwrite)
.save("outputCSV")
您可以按如下方式进行阅读
spark.read.option("delimiter", "\u0001").csv("outputCSV").show()
如果您有一个RDD,则可以使用RDD上的函数来保存
rdd.map(r => r.mkString(\u0001")).saveAsTextFile("outputCSV")
希望这有帮助!
我想用Apache Spark读入具有以下结构的文件。 csv太大了,不能使用熊猫,因为读取这个文件需要很长时间。有什么方法类似于 多谢!
问题内容: 如何为角度JS使用自定义定界符?我想将语法从更改为。 有人可以教我一个完整的示例,以了解如何使用Angular来实现吗? 问题答案: 您可以用来更改用于AngularJS表达式的开始/结束符号: 然后,在您的模板中: 这是工作中的jsFiddle:http : //jsfiddle.net/Bvc62/3/ 在此处查看有关服务的文档:http : //docs.angularjs.or
我正试图用在中添加自定义分隔符,但没有成功,我已经搜索了很多,并查看了下面提到的答案,但这对我没有帮助 链接1 链接2 链接3 我想在的每个项之间加上黑线,如下所示。 我在每行之间都有水平线,但不知道如何在列之间得到这些线。 chintan Soni的答案工作很好,但它只在一个场景中产生问题,当我有5个视图时,它还显示了其他3个项目的分界线,如下所示:
我有5个表存储为CSV文件(A.CSV、B.CSV、C.CSV、D.CSV、E.CSV)。每个文件按日期分区。如果文件夹结构如下:
[新加入Spark]语言-Scala 根据文档,RangePartitioner对元素进行排序并将其划分为块,然后将块分发到不同的机器。下面的例子说明了它是如何工作的。 假设我们有一个数据框,有两列,一列(比如“a”)的连续值从1到1000。还有另一个数据帧具有相同的模式,但对应的列只有4个值30、250、500、900。(可以是任意值,从1到1000中随机选择) 如果我使用RangePartit
我通过指定分区的数量从文本文件创建RDD(Spark 1.6)。但它给我的分区数与指定的分区数不同。 案例1 案例2 案例3 案例4 文件/home/pvikash/data/test的内容。txt是: 这是一个测试文件。将用于rdd分区 基于以上案例,我有几个问题。 对于案例2,显式指定的分区数为0,但实际分区数为1(即使默认最小分区为2),为什么实际分区数为1? 对于案例3,为什么在指定数量的