小编Gar*_*aso的帖子

如何将数组[行]转换为DataFrame

如何将这一行转换为数据帧?

val oneRowDF = myDF.first // gives Array[Row]
Run Code Online (Sandbox Code Playgroud)

谢谢

scala dataframe apache-spark

7
推荐指数
4
解决办法
2万
查看次数

加载 Excel 文件的强制性选项是什么?

我已经使用以下语法从 S3 加载了一个 excel 文件,但我想知道需要在此处设置的选项。

为什么必须设置以下所有选项以加载 excel 文件?这些选项都不是加载其他文件类型(如 csv、del、json、avro 等)所必需的。

val data = sqlContext.read.
format("com.crealytics.spark.excel").
option("location", s3path).
option("useHeader", "true").
option("treatEmptyValuesAsNulls", "true").
option("inferSchema","true").
option("addColorColumns", "true").
load(path)
Run Code Online (Sandbox Code Playgroud)

如果未设置上述任何选项(位置除外),我会收到以下错误:

sqlContext.read.format("com.crealytics.spark.excel").option("location", s3path).load(s3path)
Run Code Online (Sandbox Code Playgroud)

错误信息 :

Name: java.lang.IllegalArgumentException
Message: Parameter "useHeader" is missing in options.
StackTrace:   at com.crealytics.spark.excel.DefaultSource.checkParameter(DefaultSource.scala:37)
          at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:19)
          at com.crealytics.spark.excel.DefaultSource.createRelation(DefaultSource.scala:7)
          at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:345)
          at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:149)
          at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:132)
          at $anonfun$1.apply(<console>:47)
          at $anonfun$1.apply(<console>:47)
          at time(<console>:36)
Run Code Online (Sandbox Code Playgroud)

excel scala apache-spark apache-spark-sql spark-excel

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

Scala Spark:df.stat.sampleBy() 返回结果的差异

看到strifiedSampling上贴了很多问题,但都没有回答我的问题,所以问为“新帖”,希望能得到一些更新。

我注意到 spark API:sampleBy() 返回的结果存在差异,这对于小型数据帧没有太大意义,但对于大型数据帧(> 1000 行)更为明显

示例代码:

val inputRDD:RDD[(Any,Row)] =df.rdd.keyBy(x=> x.get(0))
val keyCount = inputRDD.countByKey()
val sampleFractions = keyCount.map(x => (x._1,{(??  x._2.toDouble*sampleSize)/(totalCount*100)})).toMap
val sampleDF = df.stat.sampleBy(cols(0),fractions = sampleFractions,seed = 11L)
Run Code Online (Sandbox Code Playgroud)

数据帧总数:200 键数:A:16 B:91 C:54 D:39

分数:地图(A -> 0.08,B -> 0.455,C -> 0.27,D -> 0.195)

我只得到 69 行作为 df.stat.sampleBy() 的输出,尽管我已经指定了预期的样本大小是 100,当然这被指定为激发 API 的分数。

谢谢

scala apache-spark

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

在 Scala 中将数据帧作为可选函数参数传递

有没有办法在 Scala 中将数据帧作为可选的输入函数参数传递?前任:

def test(sampleDF: DataFrame = df.sqlContext.emptyDataFrame): DataFrame = {


}


df.test(sampleDF)
Run Code Online (Sandbox Code Playgroud)

虽然我在这里传递了一个有效的数据框,但它总是被分配给一个空的数据框,我该如何避免这种情况?

scala apache-spark apache-spark-sql

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

Scala中的序列数组

我试图在数据框中逐列读取不同的值并将它们存储在序列数组中

def getColumnDistinctValues(df: DataFrame, colNames:String): Unit = {
  val cols: Array[String] = colNames.split(',')
  cols.foreach(println) // print column names
  var colDistValues: Array[Seq[Any]] = null
  for (i <- 0 until cols.length) {
    colDistValues(i) = df.select(cols(i)).distinct.map(x => x.get(0)).collect   // read distinct values from each column
}
Run Code Online (Sandbox Code Playgroud)

对colDistValues(i)的赋值不起作用并且总是导致空指针异常,为每个列分配不同值的正确语法是什么?

问候

scala dataframe spark-dataframe

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

更新scala中的密钥

我必须根据特定条件更新地图中的键.值不会被修改.

我最终得到了这段代码,但看起来并不整齐,有没有更好的替代方法:

val newOpt =  inOpt("type") match {

  case "mydb" =>
    inOpt map { case (key, value) => (

      if (key.contains(XXXX)) {
        key.replace("A", "B")
      }
      else if(...){..}
      else {
        key
      }


      , value)
    }
}
Run Code Online (Sandbox Code Playgroud)

所有更新的密钥以及旧密钥和值都将在newOpt中.

问候

scala scala-collections

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