小编use*_*122的帖子

Spark csv到dataframe跳过第一行

我正在使用以下方法将csv加载到数据帧:

sqlContext.read.format("com.databricks.spark.csv").option("header", "true").
                option("delimiter", ",").load("file.csv")
Run Code Online (Sandbox Code Playgroud)

但我的输入文件包含第一行中的日期和第二行中的标题.例

20160612
id,name,age
1,abc,12
2,bcd,33
Run Code Online (Sandbox Code Playgroud)

在将csv转换为数据帧时,如何跳过第一行?

apache-spark apache-spark-sql

4
推荐指数
1
解决办法
6725
查看次数

Spark - 将整行传递给 udf,然后在 udf 中获取列名

我正在将 Spark 与 Scala 一起使用,并希望将整行传递给 udf 并选择 udf 中的每个列名和列值。我怎样才能做到这一点?

我正在尝试以下 -

inputDataDF.withColumn("errorField", mapCategory(ruleForNullValidation) (col(_*)))

def mapCategory(categories: Map[String, Boolean]) = {
  udf((input:Row) =>  //write a recursive function to check if each row is in categories if yes check for null if null then false, repeat this for all columns and then combine results)   
})
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

4
推荐指数
1
解决办法
6043
查看次数

spark数据框计算列

我正在学习 spark (scala),我正在创建一个带有派生列的数据框。我正在尝试找出最佳实践。

我的用例有 2 个派生列,它们查找另一个列的值 - 例如 -

if (col22 = "USD") then col1 = "US" elseif (col22 = "CDN" the col1 = "CA" else null)
Run Code Online (Sandbox Code Playgroud)

另一个用例是

if(col23 = "us" && col100 = "abc") then col2 = "10" else if (col23 = "us" && col100 = "bacd" && col99 is null then col2 = 11 else null)
Run Code Online (Sandbox Code Playgroud)

问题 - 我已经为上述计算编写了 UDF 函数。我想知道有没有更好的方法来做到这一点?写一个udf函数是最好的做法。我将在我的代码中只使用一次这些函数。

我的 Scala 代码 -

def udf1 = udf((col22: String){  (col22) match {
    case col22 if (col22 == …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql spark-dataframe

2
推荐指数
1
解决办法
7181
查看次数

Spark数据框选择在该行的任何列中至少有一个空或空白的行

从一个数据框我想创建一个新的数据框,其中任何列中的至少一个值在spark 1.5/scala中为null或空白.

我正在尝试编写一个generalize函数来创建这个新的数据帧.我传递数据帧和列列表并创建记录.

谢谢

scala apache-spark

2
推荐指数
1
解决办法
2705
查看次数

如果它包含100000行数据,如何在C#中编写超快的ascii文件?

我有一个代码,从C#中的随机类生成随机字符串和数字.然后将其写入文本文件.我怎样才能提高性能?代码如下:

    int i = 0;
    Record[] rec = new Record[100000];
    Class1 cl = new Class1();
    Random random = new Random();
    while (i < 100000)
    {
        rec[i].num1 = random.Next();
        rec[i].num2 = random.Next();
        rec[i].mult = rec[i].num1 * rec[i].num2;
        rec[i].rel = true;
        rec[i].name = cl.generateRandomString(1);
        rec[i].var_set = cl.generateRandomString(2);          
        using (StreamWriter writer = new StreamWriter("important.txt", true))
        {

            writer.Write(rec[i].name);
            writer.Write("   ");
            writer.Write(rec[i].var_set);
            writer.Write("   ");
            writer.Write(rec[i].num1);
            writer.Write("   ");
            writer.Write(rec[i].num2);
            writer.Write("   ");
            writer.Write(rec[i].mult);
            writer.Write("   "); 
            writer.WriteLine(rec[i].rel);
        }
        i++;
Run Code Online (Sandbox Code Playgroud)

c#

1
推荐指数
1
解决办法
6000
查看次数

将 RDD 作为参数传递并将数据帧返回给函数 - scala

我正在尝试创建将字符串或 RDD 作为参数但返回数据帧的函数。

代码:

def udf1 (input: String) = {
  val file = sc.textFile(input);
  file.map(p => Person(
    (p.substring(1, 15)),
     p.substring(16, 20))).toDF()  
}

def main() { 
  case class Person(id: String, name: String)     
  val df1 = udf1 ("hdfs:\\")
}
Run Code Online (Sandbox Code Playgroud)

但它总是返回rdd。有什么建议么?

scala apache-spark apache-spark-sql

0
推荐指数
1
解决办法
1万
查看次数