2016-10-24 13 views
0

RDDデータをデータフレームに変換します。しかし、私はそうすることができません。 ToDfは動作していません。また、配列RDDをデータフレームに使用しようとしました。親切me.Thisプログラムを助言スカラを使用しDataFrameSpark RDDを変換するためrdd charをデータフレームに変換する

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) 
    } 
    } 
+1

ここに挙げたコードでスパークを使って何もしていません... –

+0

ああ、私はそこにそれを見ませんでした。とにかく、@ Shivansh Srivastavaはすでにあなたに答えを与えてくれました。 –

答えて

1

スパークEXCELサンプルを解析するためのものです。あなたはスパークバージョンに応じsqlContextまたはsparkSessionを行い、その後、あなたがSqlContextが新しいリリースで廃止される代わりとしてスパーク2.0または使用SparkSession以上を使用しているINCASE

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

を使用する必要があります!

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

これは、RDDでのtoDFの使用を可能にします。 これはあなたの問題を解決するかもしれません!

注:sqlContextを使用するには、spark_sqlを従属として追加する必要があります。

+0

Spark2.0を使用している場合には、あなた自身とSparkSessionによってsqlcontextを作成する必要はありません –

+0

見てください –

関連する問題