【问题标题】:Loading data from on-premises hdfs to local SparkR将数据从本地 hdfs 加载到本地 SparkR
【发布时间】:2015-10-19 09:36:35
【问题描述】:

我正在尝试使用 SparkR 将数据从本地 hdfs 加载到 R-Studio。

当我这样做时:

 df_hadoop <- read.df(sqlContext, "hdfs://xxx.xx.xxx.xxx:xxxx/user/lam/lamr_2014_09.csv",
              source = "com.databricks.spark.csv")

然后是这个:

str(df_hadoop)

我明白了:

Formal class 'DataFrame' [package "SparkR"] with 2 slots 
..@ env: <environment: 0x000000000xxxxxxx>  
..@ sdf:Class 'jobj' <environment: 0x000000000xxxxxx>  

这不是我正在寻找的 df,因为我试图从 hdfs 加载的 csv 中有 13 个字段。

我有一个包含 csv 的 13 个字段的架构,但我在哪里或如何将它告诉 SparkR?

【问题讨论】:

  • 其实还没解决。我已经设法用 Scala 获得了第一行,但没有设法让 str() 或 head() 在 SparkR 中运行。这可能是内存问题,因为有 6100 万。行。我还可以使用 PySpark 和 Scala 计算行数,但不能使用 SparkR 中的 nrow() ...

标签: hdfs sparkr


【解决方案1】:

如果您尝试以下操作:

df <- createDataFrame(sqlContext,
                      data.frame(a=c(1,2,3),
                                 b=c(2,3,4),
                                 c=c(3,4,5)))

str(df)

你也得到

Formal class 'DataFrame' [package "SparkR"] with 2 slots
  ..@ env:<environment: 0x139235d18> 
  ..@ sdf:Class 'jobj' <environment: 0x139230e68> 

Str() 确实向您展示了 df 的表示形式,它是一个指针而不是 data.frame。而只是使用

df

show(df)

【讨论】:

  • 谢谢!该文件非常大,因此尝试全部显示可能不是一个好主意?我尝试了 head(),但即使它永远运行,即使在这个例子中,阶段似乎只持续几秒钟:codementor.io/spark/tutorial/…
  • head() 应该很快,你也可以试试 take()。或 printSchema(),但这只会显示模式,没有示例数据。
猜你喜欢
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2015-05-03
相关资源
最近更新 更多