The text serializer will pull out an entire string by using a null terminator at the end.
If you need to know the number of string objects, though, you'll have to serialize that before the strings, then use a for loop to decode the rest of them. - Aaron On Tue, Jun 2, 2009 at 6:01 PM, dealmaker <vin...@gmail.com> wrote: > > Thanks. The number of elements in this array of String is unknown until > run > time. If datainput treats it as a byte array, I still have to know the > size > of each String. How do I do that? Would you suggest some code samples or > links that deal with similar situation like this? The only examples I got > are the ones about counting number of words which deal with integers. > Thanks. > > > Aaron Kimball-3 wrote: > > > > Hi, > > > > You can't just turn either of these two types into arrays of strings > > automatically, because they are interfaces to underlying streams of data. > > You are required to know what protocol you are implementing -- i.e., how > > many fields you are transmitting -- and manually read through that many > > fields yourself. For example, a DataInput object is effectively a pointer > > into a byte array. There may be many records in that byte array, but you > > only want to read the fields of the first record out. > > > > For DataInput / DataOutput, you can UTF8-decode the next field by calling > > Text.readString(dataInput) and Text.writeString(dataOutput). > > For ResultSet, you want resultSet.getString(fieldNum) > > > > As (yet another) shameless plug ( :smile: ), check out the tool we just > > released, which automates database import tasks. It auto-generates the > > classes necessary for your tables, too. > > http://www.cloudera.com/blog/2009/06/01/introducing-sqoop/ > > > > At the very least, you might want to play with it a bit and read its > > source > > code so you have a better idea of how to implement your own class (since > > you're doing some more creative stuff like building up associative arrays > > for each field). > > > > Cheers, > > - Aaron > > > > On Mon, Jun 1, 2009 at 9:53 PM, dealmaker <vin...@gmail.com> wrote: > > > >> > >> bump. Does anyone know? > >> > >> I am using the following class of arraywritable: > >> > >> private static class StringArrayWritable extends ArrayWritable { > >> private StringArrayWritable (String [] aSString) { > >> super (aSString); > >> } > >> } > >> > >> > >> dealmaker wrote: > >> > > >> > Hi, > >> > How do I convert DataInput to array of String? > >> > How do I convert ResultSet to array of String? > >> > Thanks. Following is the code: > >> > > >> > static class Record implements Writable, DBWritable { > >> > String [] aSAssoc; > >> > > >> > public void write(DataOutput arg0) throws IOException { > >> > throw new UnsupportedOperationException("Not supported yet."); > >> > } > >> > > >> > public void readFields(DataInput in) throws IOException { > >> > this.aSAssoc = // How to convert DataInput to String Array? > >> > } > >> > > >> > public void write(PreparedStatement arg0) throws SQLException { > >> > throw new UnsupportedOperationException("Not supported yet."); > >> > } > >> > > >> > public void readFields(ResultSet rs) throws SQLException { > >> > this.aSAssoc = // How to convert ResultSet to String Array? > >> > } > >> > } > >> > > >> > > >> > >> -- > >> View this message in context: > >> > http://www.nabble.com/How-do-I-convert-DataInput-and-ResultSet-to-array-of-String--tp23770747p23826464.html > >> Sent from the Hadoop core-user mailing list archive at Nabble.com. > >> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/How-do-I-convert-DataInput-and-ResultSet-to-array-of-String--tp23770747p23843679.html > Sent from the Hadoop core-user mailing list archive at Nabble.com. > >