Spark Dataframe的多行字符串不间断

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark Dataframe的多行字符串不间断相关的知识,希望对你有一定的参考价值。

我有一个多行字符串,我想转换为df。

val string= 
"""
Here is the

multiline/multi paragraph

example.
"""

我正在寻找看起来像的df:

+--------------------+---+
|               value|doc|
+--------------------+---+
|Here is the         |  1|
|multiline/multipar..|   |
|example.            |   |
+--------------------+---+

我得到的是:

+--------------------+---+
|               value|doc|
+--------------------+---+
|Here is the         |  1|
|multiline/multipar..|  2|
|example.            |  3|
+--------------------+---+

这是我的代码:

val df = spark.read.option("multiLine", "true").text("test1.txt")
val df_id = df.withColumn("doc",monotonicallyIncreasingId)
df_id.show()
答案

您必须用引号引起来,并且您应该使用csv阅读器,因为DataFrameReader的text方法没有选项multiLine

val df = spark.read.option("multiLine", "true")
              .option("quote", """)
              .option("escape", """)
              .csv("test1.txt")

您可以找到here每种方法可用的选项。

另一答案

Anika,这是一种创建具有多行String值的DataFrame的方法:

val str = """
  |Here is the
  |multiline
  |example.
  """.stripMargin

val df = Seq(
  (str, 1)
).toDF("value", "doc")

df.show(false)
println(s"nb elements : ${df.count}")

Spark的输出非常丑陋,但这是:

+--------------------------------+---+
|value                           |doc|
+--------------------------------+---+
|
Here is the
multiline
example.
|1  |
+--------------------------------+---+

nb elements : 1

我想这是出于测试目的。

以上是关于Spark Dataframe的多行字符串不间断的主要内容,如果未能解决你的问题,请参考以下文章

Apache Spark 在 DataFrame 中插入多行

如何在 Spark Scala 中读取带有根元素的多行 json?

sparkdataframe转换成字节流

如何在 Scala(Spark 2.0)中将带有字符串的 DataFrame 转换为带有 Vectors 的 DataFrame

DataFrame查询2 - 专用查询:索引和切片

spark_sql_DataFromMysql_InferringSchema_SparkSqlSchema_SparkSqlToMysql_SparkStreaming_Flume_Poll(示例代