小编Dev*_*tel的帖子

如何使用DataFrame和JDBC连接提高慢速Spark作业的性能?

我试图在单个节点(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记录)时,在完成查询后没有返回任何结果.

teradata apache-spark pyspark spark-dataframe

8
推荐指数
2
解决办法
1万
查看次数

将多个列表元素转换为单独的data.frame列

我试图从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)

r

5
推荐指数
1
解决办法
5923
查看次数

标签 统计

apache-spark ×1

pyspark ×1

r ×1

spark-dataframe ×1

teradata ×1