【问题标题】:Loading of json files from S3 to sparkR dataframe将 json 文件从 S3 加载到 sparkR 数据帧
【发布时间】:2017-12-09 07:05:43
【问题描述】:

我在 S3 存储桶中保存了 jason 文件。我正在尝试将它们作为数据帧加载到 spark R 中,但我收到了错误日志。以下是我的代码。我哪里错了?

devtools::install_github('apache/spark@v2.2.0',subdir='R/pkg',force=TRUE) 

library(SparkR)

sc=sparkR.session(master='local')

Sys.setenv("AWS_ACCESS_KEY_ID"="xxxx", 
       "AWS_SECRET_ACCESS_KEY"= "yyyy", 
       "AWS_DEFAULT_REGION"="us-west-2")


movie_reviews <-SparkR::read.df(path="s3a://bucketname/reviews_Movies_and_TV_5.json",sep = "",source="json")

我已经尝试了 s3a 、 s3n 、 s3 的所有组合,但似乎都没有。

我的 sparkR 控制台出现以下错误日志

17/12/09 06:56:06 WARN FileStreamSink:查找元数据目录时出错。 09 年 17 月 12 日 06:56:06 错误 RBackendHandler:org.apache.spark.sql.api.r.SQLUtils 上的 loadDF 失败 java.lang.reflect.InvocationTargetException

【问题讨论】:

    标签: sparkr


    【解决方案1】:

    对我来说很有效

    read.df("s3://bucket/file.json", "json", header = "true", inferSchema = "true", na.strings = "NA")
    

    【讨论】:

      【解决方案2】:

      @Ankit 所说的应该可以,但是如果您想获得看起来更像数据框的东西,则需要使用 select 语句。即

      rdd<- read.df("s3://bucket/file.json", "json", header = "true", inferSchema = "true", na.strings = "NA")
      

      然后做一个printSchema(rdd) 来查看数据的结构。 如果你看到有root 后面没有缩进你的数据的东西,你可以继续使用你想要的“列”的名称进行选择。如果您看到架构树向下分支,您可能必须在您的 select 语句中放置 headers.blahpayload.blah。像这样:

      sdf<- SparkR::select(rdd, "headers.something", "headers.somethingElse", "payload.somethingInPayload", "payload.somethingElse")
      

      【讨论】:

        猜你喜欢
        • 2021-11-06
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        • 1970-01-01
        • 1970-01-01
        • 2018-08-20
        相关资源
        最近更新 更多