当前位置: 首页 > 知识库问答 >
问题:

如何解析使用^a(即..001)作为带spark csv的分隔符的csv?

长孙智刚
2023-03-14

对于火花和蜂巢以及大数据和scala来说是非常新的。我正在尝试编写一个简单的函数,它接受一个sqlContext,从s3加载一个csv文件并返回一个DataFrame。问题是这个特定的csv使用^A(即\001)字符作为分隔符,并且数据集很大,所以我不能只在上面做“s/\001/,/g”。此外,字段可能包含逗号或其他我可能用作分隔符的字符。

我知道我正在使用的spack-csv包有一个分隔符选项,但我不知道如何设置它,以便它将\001读取为一个字符,而不是转义的0、0和1。也许我应该使用hiveContext什么的?

共有2个答案

燕寒
2023-03-14

使用Spark 2。x和CSV API,使用sep选项:

val df = spark.read
  .option("sep", "\u0001")
  .csv("path_to_csv_files")
於永寿
2023-03-14

如果查看GitHub页面,则spark csv有一个分隔符参数(如您所述)。使用方法如下:

val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") // Use first line of all files as header
    .option("inferSchema", "true") // Automatically infer data types
    .option("delimiter", "\u0001")
    .load("cars.csv")
 类似资料:
  • 问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号:

  • 我正在尝试从Cisco IOS配置解析以下命令:

  • 如果使用带有单个参数的第一个StringToknenizer构造函数并编写示例程序,结果是和12个令牌。它返回没有任何空格的整个句子。我明白这是怎么回事。 如果使用带有两个参数的第二个构造函数,我的测试程序将得到每个单词有空格,但没有逗号,只有两个标记。我认为它应该同时将空格和逗号作为标记分隔符计算,但它将逗号之前的所有内容作为1标记计算,将逗号之后的所有内容作为1标记计算。这部分让我很困惑。 我

  • 本文向大家介绍我们如何使用Java分割带有任何空白字符作为分隔符的字符串?,包括了我们如何使用Java分割带有任何空白字符作为分隔符的字符串?的使用技巧和注意事项,需要的朋友参考一下 String类的split()方法接受一个定界符(以字符串的形式),基于该定界符将当前String分成较小的字符串,并将所得的字符串作为数组返回。如果String不包含指定的定界符,则此方法返回仅包含当前字符串的数组

  • 我有一个逗号分隔的文件,其中有许多行类似于下面的一行。 引号用于转义用于表示多个值的分隔符逗号。 现在,如果可能的话,如何使用在逗号分隔符上拆分上述值?

  • 我正在编写一个解析器来解析字符串,比如 antlr4语法文件如下所示: 如果我把def加回来,就会出现错误: 属性:1:0:不匹配 输入“aaa.bb”应为ATTR_ID 注意:如果输入字符串为:则可以工作