一个rdd字符将被转换成一个dataframe

RDD数据将被转换成dataframe。 但我无法这样做。 ToDf不工作,我也尝试与数组RDD到数据框。 请告诉我。这个程序是用scala和sparkparsing一个样例excel

import java.io.{File, FileInputStream} import org.apache.poi.xssf.usermodel.XSSFCell import org.apache.poi.xssf.usermodel.{XSSFSheet, XSSFWorkbook} import org.apache.poi.ss.usermodel.Cell._ import org.apache.spark.sql.SQLContext import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.types.{ StructType, StructField, StringType, IntegerType }; object excel { def main(args: Array[String]) = { val sc = new SparkContext(new SparkConf().setAppName("Excel Parsing").setMaster("local[*]")) val file = new FileInputStream(new File("test.xlsx")) val wb = new XSSFWorkbook(file) val sheet = wb.getSheetAt(0) val rowIterator = sheet.iterator() val builder = StringBuilder.newBuilder var column = "" while (rowIterator.hasNext()) { val row = rowIterator.next(); val cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { val cell = cellIterator.next(); cell.getCellType match { case CELL_TYPE_NUMERIC ⇒builder.append(cell.getNumericCellValue + ",") case CELL_TYPE_BOOLEAN ⇒ builder.append(cell.getBooleanCellValue + ",") case CELL_TYPE_STRING ⇒ builder.append(cell.getStringCellValue + ",") case CELL_TYPE_BLANK ⇒ builder.append(",") } } column = builder.toString() println(column) builder.setLength(0) } val data= sc.parallelize(column) println(data) } } 

用于将Spark RDD转换为DataFrame 。 你必须根据spark版本创build一个sqlContextsparkSession ,然后使用

 val sqlContext=new SQLContext(sc) import sqlContext.implicits._ 

因为您正在使用Spark 2.0或更高版本 ,请使用SparkSession,因为在新版本中已弃用SqlContext!

 val spark=SparkSession.builder.config(conf).getOrCreate. import spark.implicits._ 

这将允许您在RDD上使用toDF。 这可能会解决你的问题!

注意:对于使用sqlContext,您必须将spark_sql作为依赖关系来使用!