无法将 SparkR::sampleBy 函数应用于 sparklyr 数据框
Can't apply the SparkR::sampleBy function to a sparklyr dataframe
我使用 df_pqt_tbl <- spark_read_parquet(...)
函数读取了镶木地板文件。
我的环境是 Databricks。
我想使用 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)
Error in (function (classes, fdef, mtable) : unable to find an
inherited method for function ‘sampleBy’ for signature ‘"tbl_spark",
"character", "list", "numeric"’
有没有办法在 spark 数据帧 中转换 tbl_spark 以便我可以使用 sampleBy函数就可以了吗?
是的,有! SparkSQL table 是 SparkR
和 sparklyr
之间的通用接口。该错误告诉您类型不匹配,但如果您使用 SparkSQL tables,您可以找到共同点。
在您的情况下,使用 SparkR
中的 sql()
函数和 sparklyr
table 中的 select 函数。
## 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
对象。
我使用 df_pqt_tbl <- spark_read_parquet(...)
函数读取了镶木地板文件。
我的环境是 Databricks。
我想使用 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)
Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘sampleBy’ for signature ‘"tbl_spark", "character", "list", "numeric"’
有没有办法在 spark 数据帧 中转换 tbl_spark 以便我可以使用 sampleBy函数就可以了吗?
是的,有! SparkSQL table 是 SparkR
和 sparklyr
之间的通用接口。该错误告诉您类型不匹配,但如果您使用 SparkSQL tables,您可以找到共同点。
在您的情况下,使用 SparkR
中的 sql()
函数和 sparklyr
table 中的 select 函数。
## 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
对象。