开发者社区 问答 正文

E-MapReduce银行员工信息查询示例



段落1创建临时表

  1. %spark
  2. import org.apache.commons.io.IOUtils
  3. import java.net.URL
  4. import java.nio.charset.Charset
  5. // Zeppelin creates and injects sc (SparkContext) and sqlContext (HiveContext or SqlContext)
  6. // So you don't need create them manually
  7. // load bank data
  8. val bankText = sc.parallelize(
  9.     IOUtils.toString(
  10.         new URL("http://emr-sample-projects.oss-cn-hangzhou.aliyuncs.com/bank.csv"),
  11.         Charset.forName("utf8")).split("\n"))
  12. case class Bank(age: Integer, job: String, marital: String, education: String, balance: Integer)
  13. val bank = bankText.map(s => s.split(";")).filter(s => s(0) != "\"age\"").map(
  14.     s => Bank(s(0).toInt,
  15.             s(1).replaceAll("\"", ""),
  16.             s(2).replaceAll("\"", ""),
  17.             s(3).replaceAll("\"", ""),
  18.             s(5).replaceAll("\"", "").toInt
  19.         )
  20. ).toDF()
  21. bank.registerTempTable("bank")


段落2查询表结构

  1. %sql
  2. desc bank


段落3查询年龄小于30各年龄段员工人数

  1. %sql select age, count(1) value from bank where age < 30 group by age order by age


段落4 查询年龄小于等于20岁的员工信息

  1. %sql select * from bank where age <= 20

展开
收起
nicenelly 2017-10-30 15:20:58 1524 分享 版权
阿里云 AI 助理回答

段落1中,您创建了一个临时表"bank",用于存储从一个CSV文件加载的数据。这个过程使用了Apache Spark的Scala API来完成以下步骤: 1. 从指定URL下载银行数据集(bank.csv)。 2. 使用IOUtils.toString读取并转换为字符串,按行分割。 3. 定义了一个名为Bank的case class来映射数据集中的列。 4. 将文本数据转换为Bank对象的集合,并过滤掉表头行。 5. 将这些对象转换为DataFrame(Spark SQL中的核心数据结构)。 6. 最后,通过registerTempTable("bank")方法将DataFrame注册为名为"bank"的临时表,可以在SQL查询中引用。

段落2展示了如何查询这个临时表"bank"的结构。使用%sql magic命令进入SQL模式,并执行desc bank命令来查看表的结构,包括各列名和类型。

段落3尝试查询年龄小于30岁的各年龄段员工人数,但该SQL语句未完整。正确的查询应该是:

SELECT age, COUNT(1) AS value FROM bank WHERE age < 30 GROUP BY age

这会返回每个年龄(小于30岁)及其对应的员工数量。

段落4同样需要完成SQL查询以获取年龄小于等于20岁的员工信息。完整的查询应为:

SELECT * FROM bank WHERE age <= 20

这条语句会列出所有年龄不超过20岁的员工的所有信息。

综上所述,您已经成功地利用阿里云的E-MapReduce服务(或类似的Spark环境,如阿里云大数据开发套件DataWorks中的Notebook),通过Scala编程和SQL查询操作了数据。如果您在实际操作中遇到任何问题,比如访问OSS存储、Spark作业配置或性能调优等,都可以参考阿里云官方文档或寻求阿里云技术支持的帮助。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答