Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark RDD到数据帧_Scala_Apache Spark_Dataframe - Fatal编程技术网

Scala Spark RDD到数据帧

Scala Spark RDD到数据帧,scala,apache-spark,dataframe,Scala,Apache Spark,Dataframe,下面是文件中的数据 PREFIX|Description|Destination|Num_Type 1|C1|IDD|NA 7|C2|IDDD|NA 20|C3|IDDD|NA 27|C3|IDDD|NA 30|C5|IDDD|NA 我正在尝试读取它并将其转换为数据帧 val file=sc.textFile("/user/cloudera-scm/file.csv") val list=file.collect.toList list.toDF.show +----------------

下面是文件中的数据

PREFIX|Description|Destination|Num_Type
1|C1|IDD|NA
7|C2|IDDD|NA
20|C3|IDDD|NA
27|C3|IDDD|NA
30|C5|IDDD|NA
我正在尝试读取它并将其转换为数据帧

val file=sc.textFile("/user/cloudera-scm/file.csv")
val list=file.collect.toList
list.toDF.show

+--------------------+
|               value|
+--------------------+
|PREFIX|Descriptio...|
|         1|C1|IDD|NA|
|        7|C2|IDDD|NA|
|       20|C3|IDDD|NA|
|       27|C3|IDDD|NA|
|       30|C5|IDDD|NA|
+--------------------+

<>我不能用精确的表格形式将数据转换成数据表

让我们先考虑一下你的代码。< /P>
//读取潜在的大文件
val file=sc.textFile(“/user/cloudera scm/file.csv”)
//收集所有东西给司机
val list=file.collect.toList
//将本地列表转换为数据帧(这不起作用)
list.toDF.show
有很多方法可以让你的代码正常工作,但是逻辑很难理解。您正在使用执行器读取数据,将所有数据放在驱动程序上,以便将其转换为数据帧(返回到执行器)。这需要大量的网络通信,对于任何相当大的数据集,驱动程序很可能会耗尽内存

您可以做什么?它可以像这样直接以数据帧的形式读取数据(驱动程序不执行任何操作,也没有不必要的IO):

spark.read
.option(“sep”、“|”)//指定分隔符
.option(“header”,true)//告诉spark有一个header
.option(“推断模式”,true)//可选,推断列的类型
.csv(“…/data.csv”).show
+------+-----------+-----------+--------+
|前缀|描述|目的地| Num|u类型|
+------+-----------+-----------+--------+
|1 | C1 | IDD | NA|
|7 | C2 | IDDD | NA|
|20 | C3 | IDDD | NA|
|27 | C3 | IDDD | NA|
|30 | C5 | IDDD | NA|
+------+-----------+-----------+--------+

感谢您回复Oli,但我正在阅读kafka stream,它最终将以数据流的形式出现。将数据流转换为RDD[String],需要将其转换为数据流。如果您将
read
替换为
readStream
,我确信它也会起作用。看看这个例子