我是cassandra和hector的新手所以我正在尝试执行cql查询,但问题是并非所有列都是字符串类型,所以我如何执行查询"select*from users"?
我的专栏系列看起来像这样:
UPDATE COLUMN FAMILY users
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: full_name, validation_class: UTF8Type}
{column_name: email, validation_class: UTF8Type}
{column_name: state, validation_class: UTF8Type, index_type: KEYS}
{column_name: gender, validation_class: UTF8Type}
{column_name: birth_year, validation_class: LongType, index_type: KEYS}
{column_name: education, validation_class: UTF8Type}
];
Run Code Online (Sandbox Code Playgroud)
我使用以下代码来执行查询:
CqlQuery<String, String, String> cqlQuery = new CqlQuery<String, String, String>(Keyspace,stringSerializer,stringSerializer,stringSerializer);
cqlQuery.setQuery("select * from users");
QueryResult<CqlRows<String, String, String>> result = cqlQuery.execute();
if (result != null && result.get() != null) {
List<Row<String, String, String>> list = …Run Code Online (Sandbox Code Playgroud) 我无法让我的 ViewPager 页面尊重状态栏高度。我的 ViewPager 有几个页面,在其中一个页面上有一张需要在半透明状态栏下显示的图像。其余页面只需要一个彩色状态栏,所以我的想法是在片段布局上使用 fitsSystemWindows="true" ,作为 viewpager 的页面。但这行不通。似乎在第一次绘制时只有第二页应用了填充。但是当滚动页面时。它消失了。所以在我看来,页面没有从 ViewPager 得到调度来应用插图。但我不知道如何实现它。
我试图用 做一些事情
public static void setOnApplyWindowInsetsListener(View v, OnApplyWindowInsetsListener listener),但我无法开始工作。我的想法是以某种方式在每个新页面上应用插图。也许这是正确的方法,但我找不到调用此方法的正确位置。
那么有没有人可以帮助我解决这个问题?我将在下面放置我的一些代码以提供有关该问题的一些上下文。
活动.xml
<..WindowInsetsFrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
这是一个自定义布局管理器,用于支持更改片段(片段转换)并再次应用 windowInset。仅供参考,这是代码:
public class WindowInsetsFrameLayout extends FrameLayout {
public WindowInsetsFrameLayout(@NonNull Context context) {
this(context, null);
}
public WindowInsetsFrameLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public WindowInsetsFrameLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// Look for replaced fragments and apply the insets again.
setOnHierarchyChangeListener(new OnHierarchyChangeListener() {
@Override …Run Code Online (Sandbox Code Playgroud) 您好我正在尝试使用hector从cassandra获取数据.有两种方法可以做到这一点.
一个是这样的cqlQuery:
CqlQuery<String, String, Long> cqlQuery = new CqlQuery<String, String, Long>(connect.tutorialKeyspace, stringSerializer, stringSerializer, longSerializer);
cqlQuery.setQuery("select home from page_view_counts where KEY ="localhost");
QueryResult<CqlRows<String, String, Long>> result;
try
{
result = cqlQuery.execute();
}
catch(HectorException e){
result = null;
message = e.getMessage();
}
Run Code Online (Sandbox Code Playgroud)
没有疑问它应该是这样的,但我不能让它工作:
SliceQuery<String, String, Long> query = HFactory.createSliceQuery(connect.tutorialKeyspace, stringSerializer,stringSerializer,longSerializer);
QueryResult<ColumnSlice<String, Long>> result2 = query.setColumnFamily("page_view_counts").setKey("localhost").setColumnNames("home").execute();
Run Code Online (Sandbox Code Playgroud)
我在哪里弄错了?
我想在我的数据库中使用cassandra -cli以下结构
例如,我有一个人的地址,地址包含一个zipcode,housenumber等原理图,它看起来像这样:
name: "address",
value: {
city: {name: "city", value: "San Francisco"},
street: {name: "street", value: "555 Union Street"},
zip: {name: "zipcode", value: "94105"},
}
Run Code Online (Sandbox Code Playgroud)
我知道如何创建超列和普通列.但我想使用column_metadata来指定超级列中的列的外观.所以这最终会是这样的:
Create column family person
with comparator = UTF8Type
and key_validation_class=UTF8Type
and default_validation_class = UTF8Type
and compression_options =
{sstable_compression:SnappyCompressor, chunk_length_kb:64}
and column_metadata = [
{column_type: super, column_name: address, validation_class: UTF8Type
column_metadata =[
{column_name: city, validation_class: UTF8Type}
{column_name: Street, validation_class: UTF8Type}
{column_name: zip, validation_class: UTF8Type}
{column_name: housnumber, validation_class: LongType}
];
Run Code Online (Sandbox Code Playgroud)
这是可能吗?
如果我可以将超级列放在另一个超级列中,那就更好了.这样,超级列"地址"可以包含多个超级列"地址",其中包含列:"street","zip"等.
为了提高我对Hector和cassandra的技能,我正在尝试使用不同的方法从cassandra中查询数据.
目前我正在尝试制作一个简单的消息系统.我希望按照时间顺序获取发布的消息,并首先发布最后发布的消息.
在普通的sql中,可以使用'order by'.我知道如果你使用OrderPreservingPartitioner是可能的,但是这个分区器已被弃用并且效率低于RandomPartioner.我想在带有时间戳als值的辅助列上创建索引,但我无法弄清楚如何获取数据.我确定我必须使用至少两个查询.
我的专栏系列看起来像这样:
create column family messages
with comparator = UTF8Type
and key_validation_class=LongType
and compression_options =
{sstable_compression:SnappyCompressor, chunk_length_kb:64}
and column_metadata = [
{column_name: message, validation_class: UTF8Type}
{column_name: index, validation_class: DateType, index_type: KEYS}
];
Run Code Online (Sandbox Code Playgroud)
我不确定我是否应该使用DataType或long作为索引列,但我认为这对于这个问题并不重要.
那么如何才能对数据进行排序?如果可能的话,我想知道如何完成CQL语法和whitout.
提前致谢.