我如何在Hive中执行此操作?
columnA columnB columnC
100.10 50.60 30
100.10 50.60 30
100.10 50.60 20
100.10 70.80 40
Run Code Online (Sandbox Code Playgroud)
输出应该是:
columnA columnB No_of_distinct_colC
100.10 50.60 2
100.10 70.80 1
Run Code Online (Sandbox Code Playgroud)
查询我认为是正确的:
SELECT columnA,columnB,COUNT(distinct column C)
from table_name
group by columnA,columnB
Run Code Online (Sandbox Code Playgroud)
它是否正确?SQL也很好.
更新:如何找到columnC的标准偏差?需要这个尽快.
我想将 Python 多行字符串转换为单行。如果我在 Vim 中打开字符串,我可以在每一行的开头看到 ^M 。如何处理字符串以使其全部在一行中,每行之间有制表符分隔。Vim 中的示例如下所示:
Serialnumber
^MName Rick
^MAddress 902, A.street, Elsewhere
Run Code Online (Sandbox Code Playgroud)
我希望它是这样的:
Serialnumber \t Name \t Rick \t Address \t 902, A.street,......
Run Code Online (Sandbox Code Playgroud)
每个字符串都在一行中。我试过
somestring.replace(r'\r','\t')
Run Code Online (Sandbox Code Playgroud)
但它不起作用。另外,一旦字符串在一行中,如果我想在字符串末尾添加换行符(UNIX 换行符?),我该怎么做?
String.valueOf() 和 new String() 有什么区别?你什么时候会使用一个?
示例 1:
public String fun(){
int foo = 55;
return String.valueOf(foo);
}
Run Code Online (Sandbox Code Playgroud)
例子2:
public String fun(){
int foo = 55;
return new String(foo);
}
Run Code Online (Sandbox Code Playgroud)
更新:是的,第二个例子没有像下面其他人指出的那样编译。我没有意识到这一点,因为我一直在使用 new String("something" + foo) 并且它已经起作用了,正如 fastcodejava 所指出的那样。那么,如果我使用 new String("something" + foo) 或 String.valueOf(foo) ,两者之间有区别吗?
我是卡夫卡的新手.我在我的本地机器上创建了一个java生成器,并在另一台机器上设置了一个Kafka代理,比如M2,在网络上(我可以ping,SSH,连接到这台机器).在Eclipse控制台的Producer端,我收到"Message sent".但是,当我检查机器M2上的控制台消费者时,我看不到这些消息.
我的java生产者代码是:
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import java.util.HashMap;
import java.util.Map;
public class KafkaMessageProducer {
/**
* @param args
*/
public static void main(String[] args) {
KafkaMessageProducer reportObj = new KafkaMessageProducer();
reportObj.send();
}
public void send(){
Map<String, Object> config = new HashMap<String, Object>();
config.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "135.113.133.60:9092");
config.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
config.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
KafkaProducer<String, String> producer = new KafkaProducer<String, String>(config);
int maxMessages = 5;
int count = 0;
while(count < maxMessages){
producer.send(new ProducerRecord<String, String>("test", "msg", "message --- #"+count++));
System.out.println("Message send.."+count);
}
producer.close(); …Run Code Online (Sandbox Code Playgroud) 我一直在寻找一种在shell脚本出错时打印行号的方法.
我遇到了'-x'选项,它在运行shell脚本时打印该行,但这不是我想要的.也许我可以在每个退出代码之前做$ LINENO?有更清洁的方法吗?
我只想要行号,这样我就可以打开shell脚本并直接转到解释器实现错误的地方.
我有两个相关问题:
Run Code Online (Sandbox Code Playgroud)class Employee implements Serializable{ byte[] avroBytes, //avro data in byte[] array String name }
在我的测试用例中,使用 MockMvc,我能够对其进行反序列化,然后将其转换为 Employee 对象,因为我的测试用例可以使用代码中的相同 POJO。然而客户端不会有这个 POJO 或类信息。收到字节后,它如何重建这个 POJO(或其他语言中的等效项)或对象?我需要在标头中发送一些类信息吗?客户端可能使用 Python 或其他某种语言,因此我需要一种使此类信息通用的方法。
在我的测试用例中,这是有效的:
Employee res = (Employee ) SerializationUtils.deserialize(result.getResponse().getContentAsByteArray());
Run Code Online (Sandbox Code Playgroud)
如果客户端没有此 POJO/信息,他们将如何将反序列化字节转换为 Employee?我可以在我的测试用例中执行此操作,因为我的代码中有 Employee 类。
评论的附加信息:
我使用 org.springframework.util.SerializationUtils serialize() 方法对其进行序列化
我想在很多字符串中删除所有出现的单撇号和双撇号.
我试过这个 -
mystring = "this string shouldn't have any apostrophe - \' or \" at all"
print(mystring)
mystring.replace("'","")
mystring.replace("\"","")
print(mystring)
Run Code Online (Sandbox Code Playgroud)
虽然它不起作用!我错过了什么吗?
我的字符串很大,当我在循环中读取每个字符串时它会不断变化.它可以包含任何字符,如",/,\.$,?,[,&,.,',),%,^,+,*等.我想逃避所有可能导致正则表达式失败的字符在Java中使用此字符串.Javascript在其中一个帖子中有类似这样的内容 -
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
Run Code Online (Sandbox Code Playgroud)
Java有类似的东西吗?我不确定逃脱的角色应该是什么.像str.replaceAll("[^\u0000-\u00ff] +","")那样做吗?(但是我在这里丢失数据,如果我用空格替换所有数据,我想避免)
我已将列表定义为:
List<Entry<String, Integer>> list
Run Code Online (Sandbox Code Playgroud)
它有字符串的计数.我想迭代列表并打印所有计数为1的字符串/键.
这是我试过的:
for (int i=0;i<list.size();i++) {
if(list.get(i) == 1){
System.out.println(list(i));
}
}
Run Code Online (Sandbox Code Playgroud)
我得到"不兼容的操作数类型Map.Entry和int"
我在 shell 脚本中使用 sqlplus 并且它可以工作(sqlplus 没有静默模式)但我可以在终端中看到输出。我尝试使用不同的组合在静音模式下运行它,但它没有用 -
sqlplus -s "$DBUSER/$DBPWD@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=$DBHOST)(Port=$DBPORT))(CONNECT_DATA=(SID=$DBSID)))" @$SCRHOME/getCsv$sqlFile.sql
Run Code Online (Sandbox Code Playgroud)
<顺便说一句 -s 是黄色而不是黑色,就像 shell 脚本中的 echo 命令>
它有效,但我可以在控制台上看到输出。我也试过:
sqlplus \-s "....
sqlplus \-s \ "...
sqplus -S
sqlplus -s \ << EOF "...
Run Code Online (Sandbox Code Playgroud)
我尝试删除双引号,但在这种情况下,即使 sqlplus 命令也不起作用。我在 shell 脚本中使用这个命令。
我有类似的东西:
public class A{
public static B[] bObj;
public A(){
bObj = new B[2]; // create array of objects of class B
}
public static void main(String[] args){
A aObj = new A();
for(i=0;i<2;i++){
bObj[i].testprint();
}
}
}
class B{
public testprint(){
System.out.println("Inside testprint()");
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在bObj [i] .testprint()处得到NullPointer异常.我确实在A的构造函数中做了新的B()但是我不知道为什么它不起作用.
我有同步静态getter和setter,如:
public synchronized static int getValue() {
return value;
}
public synchronized static void setValue(int Val) {
value = Val;
}
Run Code Online (Sandbox Code Playgroud)
如果我需要增加值,我将使用类似的东西
setValue(getValue() + 1);
Run Code Online (Sandbox Code Playgroud)
可能有一个线程设置'值'并立即尝试获取'值'.在这种情况下会发生死锁吗?如果是,那该如何避免呢?
这似乎很容易,但我收到一个错误,我不知道如何摆脱它:
counter = 0
list1 = [''] * 11
list1[1] = '000'
list1[6] = counter
list1[10] = '999'
print(list1)
a = "^".join(list1)
print(a)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
a = "^".join(list1)
TypeError: sequence item 6: expected str instance, int found
Run Code Online (Sandbox Code Playgroud)
我将字符串列表初始化为null.我需要计数器在每次迭代中为它分配一个唯一的数字.我该如何解决这个错误?