小编ale*_*lov的帖子

Spark sql如何在不丢失空值的情况下爆炸

我有一个Dataframe,我试图压扁.作为整个过程的一部分,我想爆炸它,所以如果我有一列数组,那么数组的每个值都将用于创建一个单独的行.例如,

id | name | likes
_______________________________
1  | Luke | [baseball, soccer]
Run Code Online (Sandbox Code Playgroud)

应该成为

id | name | likes
_______________________________
1  | Luke | baseball
1  | Luke | soccer
Run Code Online (Sandbox Code Playgroud)

这是我的代码

private DataFrame explodeDataFrame(DataFrame df) {
    DataFrame resultDf = df;
    for (StructField field : df.schema().fields()) {
        if (field.dataType() instanceof ArrayType) {
            resultDf = resultDf.withColumn(field.name(), org.apache.spark.sql.functions.explode(resultDf.col(field.name())));
            resultDf.show();
        }
    }
    return resultDf;
}
Run Code Online (Sandbox Code Playgroud)

问题是在我的数据中,一些数组列有空值.在这种情况下,整个行都将被删除.所以这个数据帧:

id | name | likes
_______________________________
1  | Luke | [baseball, soccer]
2  | Lucy | null
Run Code Online (Sandbox Code Playgroud)

变 …

java null apache-spark apache-spark-sql

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

Java 8将函数应用于Stream的所有元素,而不会破坏流链

在Java中是否有办法将函数应用于a的所有元素Stream而不破坏Stream链?我知道我可以打电话forEach,但那个方法会返回一个void,而不是一个Stream.

java chaining java-8 java-stream

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

为什么Elasticsearch从2.4版跳到5.0版?

根据发布历史,弹性搜索从2.4切换到5.0.

https://en.wikipedia.org/wiki/Elasticsearch#History我无法在网上找到关于版本2和版本5之间发生的事情的文档,这使得很难确定升级是否明智.

elasticsearch

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

如何在 AWS Step Functions 中的数组内使用 jsonPath

我正在编写一个 AWS 步骤函数,对于其中一个步骤,我希望调用一个接受数组作为输入之一的 lambda。但是,如果我尝试将 JsonPath 传入数组,则会得到

The value for the field 'arrayField.$' must be a STRING that contains a JSONPath but was an ARRAY
Run Code Online (Sandbox Code Playgroud)

我的步骤函数定义:

{
  "StartAt": "First",
  "States": {
  "First": {
    "Type": "Pass",
    "Parameters": {
      "type": "person"
    },
    "ResultPath": "$.output",
    "Next": "Second"
  },
    "Second": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:<aws_id>:function:MyFunction",
      "Parameters": {
        "regularParameter": "some string",
        "arrayParameter.$": ["$.output.type"]
      },
      "Next": "Succeed"
    },
    "Succeed": {
      "Type": "Succeed"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在数组中使用 jsonPath?

amazon-web-services aws-step-functions

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

Spark 数据集何时使用 except 与 Left Anti Join

我想知道调用 except 之间是否存在性能差异(https://spark.apache.org/docs/2.1.0/api/java/org/apache/spark/sql/Dataset.html# except(org.apache. Spark.sql.Dataset)并使用左反连接。到目前为止,我看到的唯一区别是,使用左反连接,两个数据集可以具有不同的列。

anti-join apache-spark apache-spark-sql

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

Intellij是否可以显示静态变量的值?

假设我有以下代码:

System.out.println(Math.PI);
Run Code Online (Sandbox Code Playgroud)

是否有插件或某些设置,我可以将鼠标悬停在上面Math.PI并让IntelliJ告诉我常量的值?

java intellij-idea

6
推荐指数
2
解决办法
3357
查看次数

如何从另一个账户访问 AWS Athena 表

我有 2 个 AWS 账户:Account1 和 Account2。我在 Account1 的 S3 中存储了一些数据,并将这些数据注册到 Account1 的 Athena 表中。现在,我想从 Account2 访问同一个 Athena 表。我意识到我可以在 Account2 中创建一个 Athena 表来查询 Account1 中的数据,但理想情况下我希望将所有表保留在 Account1 下。

amazon-web-services amazon-iam amazon-athena

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

在Spark中读取ORC文件时如何保留分区列

在 Spark 中读入 ORC 文件时,如果在路径中指定分区列,则该列将不会包含在数据集中。例如,如果我们有

val dfWithColumn = spark.read.orc("/some/path") 

val dfWithoutColumn = spark.read.orc("/some/path/region_partition=1")
Run Code Online (Sandbox Code Playgroud)

那么 dfWithColumn 将有一个 region_partition 列,但 dfWithoutColumn 不会。我如何指定我要包含所有列,即使它们已分区?

我在 Scala 上使用 spark 2.2。

编辑:这是一个可重用的 Spark 程序,它将从命令行接收参数;即使用户传入表的特定分区而不是整个表,我也希望程序能够工作。因此,使用 Dataset.filter 不是一种选择。

apache-spark apache-spark-sql orc

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

仅当新属性大于现有属性时,DynamoDb才会更新项目

仅当新项目的日期比现有项目更新时,我才想更新DynamoDB中的项目.目前,我正在查询现有项目,在我的代码中进行比较,然后写入db.我想知道是否有办法让DynamoDB为我做检查.我已经研究过使用Expected,但是它的比较运算符需要接受一个参数,这会破坏目的,因为它意味着无论如何都要查询现有项目.

我正在使用Java 8.

java amazon-web-services amazon-dynamodb

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

Spark创建不接受输入的UDF

我想向我的Spark数据帧添加一个具有随机生成的ID的列。为此,我使用UDF调用UUID的随机UUID方法,如下所示:

def getRandomId(s:String) : String = {
    UUID.randomUUID().toString()
}

val idUdf = udf(getRandomId(_:String))
val newDf = myDf.withColumn("id", idUdf($"colName"))
Run Code Online (Sandbox Code Playgroud)

显然,我的getRandomId函数不需要输入参数。但是,我不知道如何创建不接受列作为输入的UDF。在Spark中有可能吗?

我正在使用Spark 1.5

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

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