从文字值创建 DataFrame 和 JavaRDD

Posted

技术标签:

【中文标题】从文字值创建 DataFrame 和 JavaRDD【英文标题】:Create a DataFrame and JavaRDD from literal values 【发布时间】:2015-11-16 09:53:04 【问题描述】:

我正在用 Java 编写 Spark 应用程序,我想知道如何从文字值创建 DataFrame 和/或 JavaRDD。

例如我有 3 个整数,比如 (784512, 35, 40) 对应于字段/列 (id, m_count, f_count)

【问题讨论】:

【参考方案1】:

您希望 SparkContext.parallelize(...) 创建一个 JavaRDD 并希望 SQLContext.createDataFrame(...) 创建一个数据帧。

JavaRDD rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4));

如果您是在创建具有三个值的对象的并行列表之后,那么您想要:

  @Test                                                                                                 
  public void test()                                                                    
      JavaSparkContext sc =  ...                                                    
      SQLContext sqlContext =  new SQLContext(sc);                                                      

      JavaRDD<Counter> counters = sc.parallelize(Arrays.asList(new Counter(784512, 35, 40)));           
      DataFrame countersDF = sqlContext.createDataFrame(counters, Counter.class);                       

      System.out.println(counters.collect());                                                           
      System.out.println(countersDF.collectAsList());                                                           
                                                                                                       



  public static class Counter implements Serializable                                                         
      private final int id;                                                                             
      private final int m_count;                                                                        
      private final int f_count;                                                                        

      Counter(int id, int m_count, int f_count)                                                        
          this.id = id;                                                                                 
          this.m_count = m_count;                                                                       
          this.f_count = f_count;                                                                       
                                                                                                       

      public String toString()                                                                         
          return id + " " + m_count + " "  + f_count;                                                   
          
      // getters                                                                                          
                                                                                                       

【讨论】:

以上是关于从文字值创建 DataFrame 和 JavaRDD的主要内容,如果未能解决你的问题,请参考以下文章

两万文字详解Pandas DataFrame(持续更新)

从两个熊猫系列(csv的列作为DataFrame)创建元素字典

从 Pandas DataFrame 创建时间序列

PySpark - 从 Numpy 矩阵创建 DataFrame

07 从RDD创建DataFrame

07 从RDD创建DataFrame