初识DataFrames

来源:互联网 发布:简单冒泡排序算法 编辑:程序博客网 时间:2024/05/16 10:39

源:http://www.csdn.net/article/2015-02-17/2823997

在spark中,DataFrames是一个以命名列方式组织的分布式数据集,等同于关系型数据库中的一个表,也相当于R/Python中的dataFrames(但是进行了更多的优化)。dataFrames可以由结构化数据文件转换而来,也可以从hive中的表得来,以及可以转换自外部数据库或现有的RDD。

下面代码演示了如何使用Python构造DataFrames,而在Scala和Java中也有类似的API可以调用。

  1. # Constructs a DataFrame from the users table in Hive.  
  2. users = context.table("users")  
  3. # from JSON files in S3  
  4. logs = context.load("s3n://path/to/data.json""json"
一经构建,DataFrames就会为分布式数据处理提供一个指定的DSL(domain-specitic language)

  1. # Create a new DataFrame that contains “young users” only  
  2. young = users.filter(users.age < 21)  
  3. # Alternatively, using Pandas-like syntax  
  4. young = users[users.age < 21]  
  5. # Increment everybody’s age by 1  
  6. young.select(young.name, young.age + 1)  
  7. # Count the number of young users by gender  
  8. young.groupBy("gender").count()  
  9. # Join young users with another DataFrame called logs  
  10. young.join(logs, logs.userId == users.userId, "left_outer"
tongguo Spark SQL,还可以用SQL的方式操作DaraFrames.

  1. young.registerTempTable("young")  
  2. context.sql("SELECT count(*) FROM young"
类似于RDD,DataFrames同样使用了lazy的方式。也就是说,只用动作真正发生时,计算才会进行,从而,通过一些技术,执行过程可以适当进行优化。


0 0