Hi dears!

I want to convert a schemaRDD into RDD of String. How can we do that?

Currently I am doing like this which is not converting correctly no
exception but resultant strings are empty


here is my code
def SchemaRDDToRDD( schemaRDD : SchemaRDD ) : RDD[ String ] = {
                var types = schemaRDD.schema.fields.map( field => 
field.dataType )
                var list = new ArrayList[ String ]()
                types.foreach( Type => {
                        list.add( Type.toString )
                } )
                schemaRDD.map( row => rowToString( row, list ) )

        }

        private def rowToString( row : Row, list : ArrayList[ String ] ) : 
String =
{
                var record = new StringBuilder
                for ( i <- 0 until row.length ) {
                        record.append( getValue( list.get( i ), row, i ) )
                        record.append( "," )
                }
                var sub=record.setLength( record.length - 1 ).toString
                println(sub)
                sub
        }
        /** get a single value from row object
         *  @param datatype of value
         *  @param record of type Row
         *  @param i index of column in row object
         *  @return value in string
         */
        private def getValue( dataType : String, record : Row, i : Int ) : 
String =
{
                var res=""
                if ( dataType.equalsIgnoreCase( "IntegerType" ) )
                        res+=record.getInt( i )
                else if ( dataType.equalsIgnoreCase( "FloatType" ) )
                        res+=record.getFloat( i )
                else if ( dataType.equalsIgnoreCase( "LongType" ) )
                        res+=record.getLong( i )
                else if ( dataType.equalsIgnoreCase( "DoubleType" ) )
                        res+=record.getDouble( i )
                else if ( dataType.equalsIgnoreCase( "TimestampType" ) )
                        res+=record.getString( i )
                else if ( dataType.equalsIgnoreCase( "ShortType" ) )
                        res+=record.getShort( i )
                else if ( dataType.equalsIgnoreCase( "ByteType" ) )
                        res+=record.getByte( i )
                else if ( dataType.equalsIgnoreCase( "StringType" ) )
                        res=record.getString( i )
                else
                        res=record.getString( i )
                println(res)
                res
        }







--
View this message in context: 
http://apache-spark-user-list.1001560.n3.nabble.com/SchemaRDD-to-RDD-String-tp20846.html
Sent from the Apache Spark User List mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@spark.apache.org
For additional commands, e-mail: user-h...@spark.apache.org

Reply via email to