我将jason文件保存在S3存储桶中。我试图将它们作为数据帧加载到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:查找元数据目录时出错。 17/12/09 06:56:06错误RBackendHandler:org.apache.spark.sql.api.r.SQLUtils上的loadDF失败 java.lang.reflect.InvocationTargetException
答案 0 :(得分:0)
对我来说它有效
read.df("s3://bucket/file.json", "json", header = "true", inferSchema = "true", na.strings = "NA")
答案 1 :(得分:0)
@Ankit说应该有用,但如果你想要的东西看起来更像数据帧,你需要使用select
语句。即。
rdd<- read.df("s3://bucket/file.json", "json", header = "true", inferSchema = "true", na.strings = "NA")
然后执行printSchema(rdd)
查看数据结构。
如果您看到root
后面没有数据缩进的内容,您可以继续选择使用&#34;列的名称&#34;你要。如果您看到模式树的分支,则可能需要在select语句中添加headers.blah
或payload.blah
。像这样:
sdf<- SparkR::select(rdd, "headers.something", "headers.somethingElse", "payload.somethingInPayload", "payload.somethingElse")