我有一个MongoDB,它以UTC格式存储日期对象.好吧,我想在不同的时区(CET)按年,月份进行汇总.
这样做,适用于UTC:
BasicDBObject group_id = new BasicDBObject("_id", new BasicDBObject("year", new BasicDBObject("$year", "$tDate")).
append("month", new BasicDBObject("$month", "$tDate")).
append("day", new BasicDBObject("$dayOfMonth", "$tDate")).
append("customer", "$customer"));
BasicDBObject groupFields = group_id.
append("eventCnt", new BasicDBObject("$sum", "$eventCnt"));
BasicDBObject group = new BasicDBObject("$group", groupFields);
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用命令行(未测试,我只测试了java版本):
{
$group: {
_id: {
"year": {
"$year", "$tDate"
},
"month": {
"$month", "$tDate"
},
"day": {
"$dayOfMonth", "$tDate"
},
"customer": "$customer"
},
"eventCount": {
"$sum": "$eventCount"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在聚合框架内将这些日期转换为CET?
例如'2013-09-16 23:45:00 UTC'是'2013-09-17 00:45:00 CET',这是另一天.
今天我发现我的一个程序是错误的,因为隐式演员不起作用,更好的说它没有像我期望的那样工作.
我有这样的事情
long normal = 1000*24*3600*1000;
System.out.println("normal :"+normal);
Run Code Online (Sandbox Code Playgroud)
正常:500.654.080
询问excel正确的计算输出应该是86.400.000.000;
我去了java手册,长数据类型的最大值应该是2 ^ 63-1,即:9.223.372.036.854.780.000
然后我试图强迫演员长,它似乎工作:
long normal = 1000*24*3600*1000;
long explicit = 1000*24*3600*1000l; // 1000l <- letter L used at the end for long
long cast = 1000*(long)(24*3600*1000);
System.out.println("normal :"+normal);
System.out.println("explicit :"+explicit );
System.out.println("cast :"+cast);
Run Code Online (Sandbox Code Playgroud)
正常:500.654.080
显式:86.400.000.000
演员:86.400.000.000
我认为正在发生的是,java在整数溢出发生时将计算作为整数运算.
Java隐式不应该将那些整数转换为长整数?
我当前有一个 pyspark 数据框,我最初使用下面的代码创建了一个增量表 -
df.write.format("delta").saveAsTable("events")
Run Code Online (Sandbox Code Playgroud)
现在,由于上面的数据框根据我的要求每天填充数据,因此为了将新记录附加到增量表中,我使用了以下语法 -
df.write.format("delta").mode("append").saveAsTable("events")
Run Code Online (Sandbox Code Playgroud)
现在我在数据块和集群中完成了这一切。我想知道如何在 python 中编写通用 pyspark 代码,如果增量表不存在,则创建增量表,如果增量表存在,则追加记录。我想做这件事,因为如果我将我的 python 包给某人,他们不会在其环境中具有相同的增量表,因此应该从代码动态创建它。
我有一个java程序,我运行并用jps找出它的进程ID.
我怎样才能看到这个java进程的-Xms和-Xmx变量的值是多少?
每次我尝试使用Hadoop资源管理器Web界面(http://resource-manger.host:8088/cluster/)时,我都会以dr.who身份登录.
我的问题是,我如何以其他用户身份登录?在这种情况下,我想以自己的身份登录并拥有比dr.who更高的权限.
我发现很难找到 HIVE 查询日志,基本上我想看看执行了哪些查询。
基本上我想在这种状态下找到查询:
select foo, count(*) from table where field=value group by foo;
Run Code Online (Sandbox Code Playgroud) 我需要在“用户名”表上添加主键
我有3列:
userid int(10)
username char(20)
user char(50)
Run Code Online (Sandbox Code Playgroud)
和主键设置在“用户名”字段,我用它作为外键链接到另一个表。现在我还需要在'userid'字段上添加主键...所以我尝试了:
alter table `usernames` drop primary key, add primary key(userid,username);
Run Code Online (Sandbox Code Playgroud)
我得到一个错误的说法
ERROR 1553 (HY000): Cannot drop index 'PRIMARY":needed in a foreign key constraint
Run Code Online (Sandbox Code Playgroud)
有什么可能的方法吗?
java ×2
apache-spark ×1
casting ×1
delta-lake ×1
hadoop ×1
hive ×1
java-opts ×1
jvm ×1
mongo-java ×1
mongodb ×1
mysql ×1
pyspark ×1
sql ×1
sqlite ×1