在下面的示例中,我加载了一个镶木地板文件,其中包含该meta字段中地图对象的嵌套记录.sparklyr似乎在处理这些方面做得很好.但是tidyr::unnest,不会转换为SQL(或HQL - 可以理解 - 就像LATERAL VIEW explode()),因此无法使用.有没有办法以其他方式取消数据?
tfl <- head(tf)
tfl
Source: query [?? x 10]
Database: spark connection master=yarn-client app=sparklyr local=FALSE
trkKey meta sources startTime
<chr> <list> <list> <list>
1 3juPe-k0yiMcANNMa_YiAJfJyU7WCQ3Q <S3: spark_jobj> <list [24]> <dbl [1]>
2 3juPe-k0yiAJX3ocJj1fVqru-e0syjvQ <S3: spark_jobj> <list [1]> <dbl [1]>
3 3juPe-k0yisY7UY_ufUPUo5mE1xGfmNw <S3: spark_jobj> <list [7]> <dbl [1]>
4 3juPe-k0yikXT5FhqNj87IwBw1Oy-6cw <S3: spark_jobj> <list [24]> <dbl [1]>
5 3juPe-k0yi4MMU63FEWYTNKxvDpYwsRw <S3: spark_jobj> <list [7]> <dbl [1]>
6 3juPe-k0yiFBz2uPbOQqKibCFwn7Fmlw …Run Code Online (Sandbox Code Playgroud) 我正在使用jsonlite它加载一些 JSON 数据,这会导致一些嵌套数据(在结构上)类似于data.table dt下面构造的玩具。我希望能够用于rbindlist将嵌套的data.tables绑定在一起。
设置:
> dt <- data.table(a=c("abc", "def", "ghi"), b=runif(3))
> dt[, c:=list(list(data.table(d=runif(4), e=runif(4))))]
> dt
a b c
1: abc 0.2623218 <data.table>
2: def 0.7092507 <data.table>
3: ghi 0.2795103 <data.table>
Run Code Online (Sandbox Code Playgroud)
使用内置于 中的 NSE data.table,我可以执行以下操作:
> rbindlist(dt[, c])
d e
1: 0.8420476 0.26878325
2: 0.1704087 0.59654706
3: 0.6023655 0.42590380
4: 0.9528841 0.06121386
5: 0.8420476 0.26878325
6: 0.1704087 0.59654706
7: 0.6023655 0.42590380
8: 0.9528841 0.06121386
9: 0.8420476 0.26878325
10: 0.1704087 …Run Code Online (Sandbox Code Playgroud) 是sparklyr- [R包能够连接到YARN管理Hadoop集群?这似乎没有在集群部署文档中记录.使用SparkRSpark附带的软件包可以通过以下方式实现:
# set R environment variables
Sys.setenv(YARN_CONF_DIR=...)
Sys.setenv(SPARK_CONF_DIR=...)
Sys.setenv(LD_LIBRARY_PATH=...)
Sys.setenv(SPARKR_SUBMIT_ARGS=...)
spark_lib_dir <- ... # install specific
library(SparkR, lib.loc = c(sparkr_lib_dir, .libPaths()))
sc <- sparkR.init(master = "yarn-client")
Run Code Online (Sandbox Code Playgroud)
然而,当我用上面的最后一行交换时
library(sparklyr)
sc <- spark_connect(master = "yarn-client")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Error in start_shell(scon, list(), jars, packages) :
Failed to launch Spark shell. Ports file does not exist.
Path: /usr/hdp/2.4.2.0-258/spark/bin/spark-submit
Parameters: '--packages' 'com.databricks:spark-csv_2.11:1.3.0,com.amazonaws:aws-java-sdk-pom:1.10.34' '--jars' '<path to R lib>/3.2/sparklyr/java/rspark_utils.jar' sparkr-shell /tmp/RtmpT31OQT/filecfb07d7f8bfd.out
Ivy Default Cache set to: /home/mpollock/.ivy2/cache
The jars for …Run Code Online (Sandbox Code Playgroud)