我从这个link中得知Cassandra上下文被从DataStax Enterprise 4.7中删除了。这是否意味着它将从Spark Cassandra Connector中删除?还有,删除它的原因是什么?是否与性能有关?
DataStax Enterprise 4.7
Spark Cassandra Connector
bkhjykvo1#
“CassandraContext”对象是Datastax Only,从未存在于Spark Cassandra连接器中。它基本上是一个Cassandra表到Scala对象和case类的编译Map。每次Cassandra的底层架构发生变化时,它都需要编译一个新对象,并与OSS Spark Cassandra连接器API产生分歧。创建该对象的额外性能成本被视为时间的浪费,代码只能在Spark Shell中工作,因此它不适合于对独立应用程序的代码进行原型化。
CassandraSQLContext的主要目的是在系统没有HiveMetastore时提供一个持久目录和从Spark到Cassandra表的自动Map。当使用CassandraSqlContext时,用户被限制在AnsiSQL的一个很小的子集上,而HiveContext使用了99%的HiveQL。CassandraSQLContext的代码仍然存在于连接器中,您仍然可以在DSE中创建CassandraSQLContext。在DatastaxEnterprise中,已经编写了一个HiveMetastore来与Cassandra一起使用。自定义Metastore也会自动注册所有Cassandra表,因此使用CassandraSQLContext被视为冗余、混乱功能也不如Hive。为此,建议所有用户使用HiveContext,而不是CassandraSQLContext,并且我们从外壳。
CassandraSQLContext
HiveMetastore
HiveContext
1条答案
按热度按时间bkhjykvo1#
Cassandra上下文
“CassandraContext”对象是Datastax Only,从未存在于Spark Cassandra连接器中。它基本上是一个Cassandra表到Scala对象和case类的编译Map。每次Cassandra的底层架构发生变化时,它都需要编译一个新对象,并与OSS Spark Cassandra连接器API产生分歧。创建该对象的额外性能成本被视为时间的浪费,代码只能在Spark Shell中工作,因此它不适合于对独立应用程序的代码进行原型化。
编辑:我错了,Cassandra上下文是一个独立的结构,而不是CassandraSQLContext。我的记忆有误。
CassandraSQLContext
的主要目的是在系统没有HiveMetastore
时提供一个持久目录和从Spark到Cassandra表的自动Map。当使用CassandraSqlContext时,用户被限制在AnsiSQL的一个很小的子集上,而HiveContext
使用了99%的HiveQL。CassandraSQLContext
的代码仍然存在于连接器中,您仍然可以在DSE中创建CassandraSQLContext
。在DatastaxEnterprise中,已经编写了一个
HiveMetastore
来与Cassandra一起使用。自定义Metastore也会自动注册所有Cassandra表,因此使用CassandraSQLContext
被视为冗余、混乱功能也不如Hive。为此,建议所有用户使用HiveContext,而不是CassandraSQLContext,并且我们从外壳。