如果我们没有架构,如何在数据框中引用字段名称

时间:2016-12-12 14:06:18

标签: scala apache-spark spark-dataframe

如果我们没有架构,我们如何引用数据框中的特定字段。 我们可以引用一些东西,比如col1,col2,col3,.....等,而不是名字。

我有一个像下面这样的csv文件。

arun|1001|hyd|x|y|z
suresh|1002|hyd|a|h|t
arun|1003|chn|e|g|e
suresh|1004|ban|r|f|w

如何引用第一个字段并根据名称过滤记录,将其写入单独的文件。

所有arun条记录和suresh我想写入单独的文件,如下所示。

arun|1001|hyd|x|y|z
arun|1003|chn|e|g|e

suresh|1002|hyd|a|h|t
suresh|1004|ban|r|f|w

1 个答案:

答案 0 :(得分:0)

三个选项:

  1. 使用默认列名称,c1,c2等
  2. 使用Row中的getAs()方法,即在过滤器或映射器中
  3. 以编程方式指定架构
  4. 在Scala架构中生成为:

    import org.apache.spark.sql.Row
    import org.apache.spark.sql.functions.{col, udf}
    import org.apache.spark.sql.types._
    
    val schema = StructType(
        StructField("name", StringType, false) ::
        StructField("intValue", IntegerType, false) :: Nil)
    
    val df = sqlContext.createDataFrame(dfFromLoad.rdd, schema)