我试图在单个节点(local [*])上以独立模式通过JDBC访问中型Teradata表(约1亿行).
我正在使用Spark 1.4.1.并且设置在一个非常强大的机器上(2个CPU,24个内核,126G RAM).
我已经尝试了几种内存设置和调整选项,以使其更快地工作,但它们都没有产生巨大的影响.
我确信有一些我缺少的东西,下面是我的最后一次尝试,花了大约11分钟来获得这个简单的计数与使用JDBC连接通过R只需要40秒来获得计数.
bin/pyspark --driver-memory 40g --executor-memory 40g
df = sqlContext.read.jdbc("jdbc:teradata://......)
df.count()
Run Code Online (Sandbox Code Playgroud)
当我尝试使用BIG表(5B记录)时,在完成查询后没有返回任何结果.
我试图从api的json数据将列表转换为data.frame.使用fromJSON,我得到一个嵌套的列表结构,我需要在其他一些数据帧上加入这些数据.
因此,列表是多维的(嵌套的).我一直在尝试将多个元素转换为data.frame中的单独列,因为它与其他框架的结构匹配并进行连接.我确信有一种优雅的方式可以做到这一点,但我似乎找不到一个.在最坏的情况下,我可能最终使用for循环.
任何帮助,将不胜感激!!!!
以下是创建列表的示例数据:
mylist <- list(structure(list(
categoryName = "cat1",
parent_categories = "parent1",
url = "/xyx.com/bca/"),
.Names = c("categoryName", "parent_categories", "url")),
structure(list(
categoryName = "cat2",
parent_categories = c("parent2", "parent3", "parent4"),
url = "/abc.com/bca"),
.Names = c("categoryName", "parent_categories", "url"))
)
Run Code Online (Sandbox Code Playgroud)
我想要的输出应该是这样的
categoryName parent_categories_1 parent_categories_2 parent_categories_3 url
1 cat1 parent1 NA NA /xyx.com/bca/
2 cat2 parent2 parent3 parent4 /abc.com/bca
Run Code Online (Sandbox Code Playgroud)
以下是我使用但未获得所需结果的内容,尽管它非常接近
ldply(mylist, function(x){ data.frame(x) })
**MY CURRENT OUTPUT**
categoryName parent_categories url
1 cat1 parent1 /xyx.com/bca/
2 cat2 parent2 /abc.com/bca …Run Code Online (Sandbox Code Playgroud)