我已经使用df_pqt_tbl <- spark_read_parquet(...)
函数读取了一个镶木地板文件。 我的环境是数据砖。 我想使用SparkR::sampleBy
函数进行分层采样,但出现错误:
class(df_pqt_tbl)
df_train <- SparkR::sampleBy(df_pqt_tbl, col = 'labels',
fractions = list('0'=0.7, '1'=0.7),
seed = 12345)
(函数(类、fdef、mtable(中的错误:找不到 签名 '"tbl_spark" 函数 'sampleBy' 的继承方法, "字符"、"列表"、"数字">
有没有办法转换火花数据框中的tbl_spark,以便我可以在其上使用sampleBy函数?
是的,有! SparkSQL表是SparkR
和sparklyr
之间的通用接口。 该错误告诉您类型不匹配,但是如果您使用SparkSQL表,则可以找到共同点。
在您的情况下,请使用SparkR
中的sql()
函数,然后从sparklyr
表中选择全部。
## Read parquet using sparklyr
df_pqt_tbl <- spark_read_parquet(sc, "path", name = "sparklyr_tbl")
## Use SparkSQL to access in SparkR
pqt_tblDF <- sparkR::sql("select * from sparklyr_tbl")
## Now use functions from SparkR
df_train <- sparkR::sampleBy(df_pqt_tbl, col = 'labels',
fractions = list('0'=0.7, '1'=0.7),
seed = 12345)
要采用另一种方式,您需要从SparkR
创建一个临时视图,然后将该视图读入sparklyr
对象。
sparkR::createOrReplaceTempView(sparkRDF, "sparkSQL_table")
然后使用
sparklyr_tbl <- sparklyr::spark_read_table(sc, "sparkSQL_table")
然后,可以将sparklyr
中的函数应用于sparklyr_tbl
对象。