我是Hadoop和Spark的新手。我正在使用Spark-2.1.1-bin-hadoop2.7。使用SparkR我想从Hadoop 2.7.3 HDFS加载(读取)数据。
我知道,我可以使用“hdfs:// somepath-to-my-file”指向我的Hadoop文件,但是我找不到SparkR中的函数来完成这项工作。 read.df()不起作用。
我使用sparkR.session()连接到我的Spark会话。 为了启动Spark的R接口,我从spark的bin位置运行sparkR。
简而言之,我想使用sparkR从HDFS加载csv文件。
请帮忙。如果可能,请提供示例。
谢谢, SG
答案 0 :(得分:0)
答案 1 :(得分:0)
我无法找到错误的解决方案,请分享您执行的代码(完全给出启动sparkR&读取csv文件的方式)
解决方案将是。
Option A:
# reading the file stored in local not in HDFS but in R
R_dataframe <- read.csv(file="mydata/train.csv", header=TRUE, sep=",")
#Note(If the file is too big it cant hold as it depends on RAM size,
so u can increase the driver memory while starting sparkR
by ".bin/sparkR --driver-memory 12g")
#convert R dataframe to sparkR dataframe:
sparkR_dataframe <- as.DataFrame(R_dataframe)
Option B:
Read it in Python as RDD from HDFS and save as parquet file.
#convert RDD to dataframe
df = rdd.toDF()
#save df as parquet file.
df.write.parquet("train.parquet")
#In sparkR session read the file:
train_df <- read.parquet("train.parquet")
答案 2 :(得分:0)
解决方案是在read.df()和loadDF()中提及“source”参数。以下是我的步骤:
#step1: launch hadoop standalone (using start-dfs.cmd and start-yarn.cmd)
#step2: launch spark standalone just by typing sparkR
#step3: run following command to load a csv file from HDFS
myfile <- read.df(path="hdfs://localhost:9000/mydata/train.csv", source="csv")
#step4: print few lines from myfile
head(myfile)
请注意,在我的代码中,我的train.csv文件位于HDFS的mydata目录中。 函数read.df()和loadDF()工作正常。 整个设置在Windows8.1中有以下内容:
感谢。