You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Nury Redjepow <nr...@mail.ru> on 2012/06/15 14:41:37 UTC

Problem with streaming with sstableloader into ubuntu node

Good day, everyone

We are using sstableloader to bulk insert data into cassandra. 

Script is executed on developers machine with Windows to Single Node Cassandra. 

"%JAVA_HOME%\bin\java" -ea -cp %CASSANDRA_CLASSPATH% -Xmx256M -Dlog4j.configuration=log4j-tools.properties org.apache.cassandra.tools.BulkLoader -d 10.0.3.37 --debug -v "DestinationPrices/PricesByHotel" 

This works fine if destination cassandra is working under windows, but doesn't work with ubuntu instance. Cli is able to connect, but sstable seem to have problem with keyspace name. Logs in ubuntu instance show error messages like:

ERROR [Thread-41] 2012-06-15 16:05:47,620 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[Thread-41,5,main]
java.lang.AssertionError: Unknown keyspace DestinationPrices\PricesByHotel\DestinationPrices


In our schema we have keyspace DestinationPrices, and column family PricesByHotel. Somehow it's not accepted properly.

So my question is, how should I specify keyspace name in command, to make it work correctly with Ubuntu?

Re: Problem with streaming with sstableloader into ubuntu node

Posted by aaron morton <aa...@thelastpickle.com>.
The code is processing the file name, without the path and appears to be correct.

Can you show the full error (including any other output) and the directory / files you are running the bulk load against when in windows ?

Bulk load expects
keyspace/
	column_family/
		sstable-file

Cheers


-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 19/06/2012, at 3:13 AM, Nury Redjepow wrote:

> Okay,  we investigated the problem and found the source of proble in package org.apache.cassandra.io.sstable;
> 
> public class Descriptor
> 
> public static Pair<Descriptor,String> fromFilename(File directory, String name)
> {
> // tokenize the filename
> StringTokenizer st = new StringTokenizer(name, String.valueOf(separator));
> String nexttok;
> 
> if bulkloader running from windows and cassandra running under Ubuntu, directory is ("KeySpaceName\\ColumnFamilyName\\KeySpaceName-ColumnFamilyName-hc-177-Data.db"  
> 
> so at next rows  
> String ksname = st.nextToken();
> String cfname = st.nextToken();
> 
> ksname becomes "KeySpaceName\\ColumnFamilyName\\KeySpaceName"
> 
> 
> Sincerely, Nury.
> 
> 
> 
> 
> Mon, 18 Jun 2012 15:40:17 +1200 от aaron morton <aa...@thelastpickle.com>:
> Cross platform clusters are not really supported. 
> 
> That said it sounds like a bug. If you can create some steps to reproduce it please create a ticket here https://issues.apache.org/jira/browse/CASSANDRA it may get looked it. 
> 
> Cheers
> 
> -----------------
> Aaron Morton
> Freelance Developer
> @aaronmorton
> http://www.thelastpickle.com
> 
> On 16/06/2012, at 12:41 AM, Nury Redjepow wrote:
> 
>> Good day, everyone
>> 
>> We are using sstableloader to bulk insert data into cassandra. 
>> 
>> Script is executed on developers machine with Windows to Single Node Cassandra. 
>> 
>> "%JAVA_HOME%\bin\java" -ea -cp %CASSANDRA_CLASSPATH% -Xmx256M -Dlog4j.configuration=log4j-tools.properties org.apache.cassandra.tools.BulkLoader -d 10.0.3.37 --debug -v "DestinationPrices/PricesByHotel" 
>> 
>> This works fine if destination cassandra is working under windows, but doesn't work with ubuntu instance. Cli is able to connect, but sstable seem to have problem with keyspace name. Logs in ubuntu instance show error messages like:
>> 
>> ERROR [Thread-41] 2012-06-15 16:05:47,620 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[Thread-41,5,main]
>> java.lang.AssertionError: Unknown keyspace DestinationPrices\PricesByHotel\DestinationPrices
>> 
>> 
>> In our schema we have keyspace DestinationPrices, and column family PricesByHotel. Somehow it's not accepted properly.
>> 
>> So my question is, how should I specify keyspace name in command, to make it work correctly with Ubuntu?
>> 
> 
> 


Re[2]: Problem with streaming with sstableloader into ubuntu node

Posted by Nury Redjepow <nr...@mail.ru>.
Okay,  we investigated the problem and found the source of proble in package org.apache.cassandra.io.sstable;
public class Descriptor
public static Pair<Descriptor,String> fromFilename(File directory, String name)
 {
 // tokenize the filename
 StringTokenizer st = new StringTokenizer(name, String.valueOf(separator));
 String nexttok;
if bulkloader running from windows and cassandra running under Ubuntu, directory is ("KeySpaceName\\ColumnFamilyName\\KeySpaceName-ColumnFamilyName-hc-177-Data.db"  

so at next rows  
String ksname = st.nextToken();
 String cfname = st.nextToken();

ksname becomes "KeySpaceName\\ColumnFamilyName\\KeySpaceName"
Sincerely, Nury.




Mon, 18 Jun 2012 15:40:17 +1200 от aaron morton <aa...@thelastpickle.com>:
 
  
  
Cross platform clusters are not really supported. 

That said it sounds like a bug. If you can create some steps to reproduce it please create a ticket here https://issues.apache.org/jira/browse/CASSANDRA it may get looked it. 

Cheers

-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com
On 16/06/2012, at 12:41 AM, Nury Redjepow wrote:
Good day, everyone

We are using sstableloader to bulk insert data into cassandra. 

Script is executed on developers machine with Windows to Single Node Cassandra. 

"%JAVA_HOME%\bin\java" -ea -cp %CASSANDRA_CLASSPATH% -Xmx256M -Dlog4j.configuration=log4j-tools.properties org.apache.cassandra.tools.BulkLoader -d 10.0.3.37 --debug -v "DestinationPrices/PricesByHotel" 

This works fine if destination cassandra is working under windows, but doesn't work with ubuntu instance. Cli is able to connect, but sstable seem to have problem with keyspace name. Logs in ubuntu instance show error messages like:

ERROR [Thread-41] 2012-06-15 16:05:47,620 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[Thread-41,5,main]
java.lang.AssertionError: Unknown keyspace DestinationPrices\PricesByHotel\DestinationPrices


In our schema we have keyspace DestinationPrices, and column family PricesByHotel. Somehow it's not accepted properly.

So my question is, how should I specify keyspace name in command, to make it work correctly with Ubuntu?
    

Re: Problem with streaming with sstableloader into ubuntu node

Posted by aaron morton <aa...@thelastpickle.com>.
Cross platform clusters are not really supported. 

That said it sounds like a bug. If you can create some steps to reproduce it please create a ticket here https://issues.apache.org/jira/browse/CASSANDRA it may get looked it. 

Cheers

-----------------
Aaron Morton
Freelance Developer
@aaronmorton
http://www.thelastpickle.com

On 16/06/2012, at 12:41 AM, Nury Redjepow wrote:

> Good day, everyone
> 
> We are using sstableloader to bulk insert data into cassandra. 
> 
> Script is executed on developers machine with Windows to Single Node Cassandra. 
> 
> "%JAVA_HOME%\bin\java" -ea -cp %CASSANDRA_CLASSPATH% -Xmx256M -Dlog4j.configuration=log4j-tools.properties org.apache.cassandra.tools.BulkLoader -d 10.0.3.37 --debug -v "DestinationPrices/PricesByHotel" 
> 
> This works fine if destination cassandra is working under windows, but doesn't work with ubuntu instance. Cli is able to connect, but sstable seem to have problem with keyspace name. Logs in ubuntu instance show error messages like:
> 
> ERROR [Thread-41] 2012-06-15 16:05:47,620 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[Thread-41,5,main]
> java.lang.AssertionError: Unknown keyspace DestinationPrices\PricesByHotel\DestinationPrices
> 
> 
> In our schema we have keyspace DestinationPrices, and column family PricesByHotel. Somehow it's not accepted properly.
> 
> So my question is, how should I specify keyspace name in command, to make it work correctly with Ubuntu?
>