Given Data:查看名為employee.txt的文件的以下數(shù)據(jù),該文件放在運行spark shell點的當(dāng)前相應(yīng)目錄中。
1201, satish, 25 1202, krishna, 28 1203, amith, 39 1204, javed, 23 1205, prudvi, 23按照以下步驟以編程方式生成模式。
$ spark-shell
scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
scala> val employee = sc.textFile("employee.txt")
scala> val schemaString = "id name age"
schemaString: String = id name age
scala> import org.apache.spark.sql.Row; scala> import org.apache.spark.sql.types.{StructType, StructField, StringType};
scala> val schema = StructType(schemaString.split(" ").map(fieldName ? StructField(fieldName, StringType, true)))
scala> val rowRDD = employee.map(_.split(",")).map(e ? Row(e(0).trim.toInt, e(1), e(2).trim.toInt))
使用以下語句通過使用roRDDdata和模式(SCHEMA)變量創(chuàng)建DataFrame。
scala> val employeeDF = sqlContext.createDataFrame(rowRDD, schema)輸出
employeeDF: org.apache.spark.sql.DataFrame = [id: string, name: string, age: string]
scala> employeeDF.registerTempTable("employee")employee表現(xiàn)在準(zhǔn)備好了。 讓我們使用SQLContext.sql()方法將一些SQL查詢傳遞到表中。
scala> val allrecords = sqlContext.sql("SELECT * FROM employee")要查看所有記錄數(shù)據(jù)幀的結(jié)果數(shù)據(jù),請使用以下命令。
scala> allrecords.show()輸出
+------+--------+----+| id | name |age |+------+--------+----+| 1201 | satish | 25 || 1202 | krishna| 28 || 1203 | amith | 39 || 1204 | javed | 23 || 1205 | prudvi | 23 |+------+--------+----+方法sqlContext.sql允許您在列和它們的類型在運行時之前未知時構(gòu)造數(shù)據(jù)框架。 現(xiàn)在,您可以對其運行不同的SQL查詢。
更多建議: