尽管Impala比Hive快得多,但我们使用Hive是因为它支持复杂的(嵌套的)数据类型,例如数组和映射。
我注意到,从CDH5.5开始,Impala 现在支持复杂的数据类型。由于也可以在Impala中运行Hive UDF,因此我们可能可以在Impala中完成我们想要的所有事情,但是速度要快得多。这真是个好消息!
在浏览文档时,我发现Impala希望数据以Parquet格式存储。我的数据以原始格式碰巧是一个两列CSV,其中第一列是ID,第二列是用竖线分隔的字符串数组,例如:
123,ASDFG|SDFGH|DFGHJ|FGHJK
234,QWERT|WERTY|ERTYU
Run Code Online (Sandbox Code Playgroud)
配置单元表已创建:
CREATE TABLE `id_member_of`(
`id` INT,
`member_of` ARRAY<STRING>)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY '|'
LINES TERMINATED BY '\n'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';
Run Code Online (Sandbox Code Playgroud)
原始数据已加载到Hive表中:
LOAD DATA LOCAL INPATH 'raw_data.csv' INTO TABLE id_member_of;
Run Code Online (Sandbox Code Playgroud)
表的Parquet版本已创建:
CREATE TABLE `id_member_of_parquet` (
`id` STRING,
`member_of` ARRAY<STRING>)
STORED AS PARQUET;
Run Code Online (Sandbox Code Playgroud)
来自CSV支持表的数据被插入到Parquet表中:
INSERT INTO id_member_of_parquet SELECT id, member_of FROM id_member_of;
Run Code Online (Sandbox Code Playgroud)
现在可以在Hive中查询Parquet表:
hive> select * from id_member_of_parquet;
123 ["ASDFG","SDFGH","DFGHJ","FGHJK"]
234 ["QWERT","WERTY","ERTYU"]
Run Code Online (Sandbox Code Playgroud)
奇怪的是,当我在Impala中查询同一Parquet支持的表时,它不返回数组列: …
我正在运行一个MapR集群,想要用德鲁伊做一些时间序列分析.MapR使用Zookeeper的非标准端口(端口5181而不是传统端口2181).
当我启动Druid协调器服务时,它会尝试连接传统的Zookeeper端口并失败:
2015-03-03T17:46:49,614 INFO [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn - Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181.
2015-03-03T17:46:49,617 WARN [main-SendThread(localhost:2181)] org.apache.zookeeper.ClientCnxn - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: Connection refused
Run Code Online (Sandbox Code Playgroud)
在德鲁伊的文件显示,该动物园管理员主机可以通过设置druid.zk.service.host在财产config/_common/common.runtime.properties.它没有指定编辑Zookeeper端口的属性.
德鲁伊的Zookeeper端口是否可配置?或者如果在MapR中使用德鲁伊,是否有必要运行其他Zookeeper服务?
我想通过Spring Boot项目使用Logback,因为它的性能和灵活性.我将Logback依赖项添加到pom.xml:
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
...并确保我项目中每个类中的日志记录都是这样创建的:
public class MyClass {
static final Logger LOG = LoggerFactory.getLogger(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
项目启动时,控制台中会显示以下警告:
log4j:WARN No appenders could be found for logger (org.springframework.boot.logging.ClasspathLoggingApplicationListener).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Run Code Online (Sandbox Code Playgroud)
看起来Spring仍在尝试使用log4j而不是logback.我尝试添加logging.config=classpath:logback.xml到Spring application.properties,但它没有解决问题.
你能看出我做错了什么吗?
@AliDehghani和@chrylis都认为它log4j正被另一个包引用pom.来自mvn dependency:tree确认的输出hbase-common来源:
com.woolford:my-project:jar:1.0-SNAPSHOT
+- org.apache.hbase:hbase-common:jar:1.1.2:compile
| [... etc ...]
| +- commons-logging:commons-logging:jar:1.2:compile
| …Run Code Online (Sandbox Code Playgroud) 我正在尝试根据许多 GLM、GBM 和深度学习模型在 H2O 中创建一个集成模型。
这是我到目前为止所做的。
导入相关库:
import h2o
from h2o.estimators.glm import H2OGeneralizedLinearEstimator
from h2o.estimators.gbm import H2OGradientBoostingEstimator
from h2o.estimators.deeplearning import H2ODeepLearningEstimator
from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator
from h2o.grid.grid_search import H2OGridSearch
Run Code Online (Sandbox Code Playgroud)
数据可以从这里下载。进口:
airlines = h2o.import_file(path = "/Users/alexwoolford/h2o/allyears2k.csv", destination_frame = "airlines.hex")
Run Code Online (Sandbox Code Playgroud)
分为训练/测试集:
airlines_80,airlines_20 = airlines.split_frame(ratios=[.8], destination_frames=["airlines_80.hex", "airlines_20.hex"])
Run Code Online (Sandbox Code Playgroud)
定义变量(将 y 预测为 x 中所有列的函数):
x= airlines.columns
y= "ArrDelay"
x.remove(y)
Run Code Online (Sandbox Code Playgroud)
设置公共属性:
folds=5
assignment_type="Modulo"
search_criteria={'strategy': 'RandomDiscrete', 'max_models': 5, 'seed': 1}
Run Code Online (Sandbox Code Playgroud)
使用H2O的网格搜索来创建各种模型:
# GLM
glm_params = {"alpha": [0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, …Run Code Online (Sandbox Code Playgroud) 我编写了一个 Spring Boot 应用程序,我想使用Micrometer向 Prometheus 公开自定义指标。这是一个代码片段,我在其中递增计数器(有效)并尝试设置几个仪表(无效):
@Scheduled(cron = "*/2 * * * * *") // run every 2 seconds
private void logTemperature() throws UnknownHostException {
// get measurement
SensorReader sensorReader = new SensorReader();
SensorReading sensorReading = sensorReader.getSensorReading();
Metrics.counter("measurements").increment();
Metrics.gauge("fahrenheit", sensorReading.getFahrenheit());
Metrics.gauge("humidity", sensorReading.getHumidity());
// do stuff with measurement
// ...
}
Run Code Online (Sandbox Code Playgroud)
完整的源代码在这里:https : //github.com/alexwoolford/htu21d_logger/tree/master/htu21d-logger-spring
对象中的fahrenheit字段sensorReading是 a float。输出中存在仪表,但值是NaN(即不是数字):
# HELP measurements_total
# TYPE measurements_total counter
measurements_total 82.0
...
# HELP humidity
# …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Spring Boot 应用程序中的spring-kafka KafkaTemplate 将消息写入 Kafka 主题。
我创建了一个 KafkaConfig 类:
@Configuration
@EnableKafka
public class KafkaConfig {
@Value("${kafka.broker.address}")
private String brokerAddress;
@Bean
public ProducerFactory<Integer, String> producerFactory() {
return new DefaultKafkaProducerFactory<>(producerConfigs());
}
@Bean
public Map<String, Object> producerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, brokerAddress);
props.put(ProducerConfig.RETRIES_CONFIG, 0);
props.put(ProducerConfig.BATCH_SIZE_CONFIG, 16384);
props.put(ProducerConfig.LINGER_MS_CONFIG, 1);
props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, 33554432);
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, IntegerSerializer.class);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
return props;
}
@Bean
public KafkaTemplate<Integer, String> kafkaTemplate() {
return new KafkaTemplate<Integer, String>(producerFactory());
}
}
Run Code Online (Sandbox Code Playgroud)
...并在我给 Kafka 写信的班级中自动连接了 KafkaTemplate:
@Autowired
private KafkaTemplate<Integer, String> …Run Code Online (Sandbox Code Playgroud) java ×2
spring ×2
spring-boot ×2
druid ×1
h2o ×1
hive ×1
impala ×1
logback ×1
logging ×1
mapr ×1
micrometer ×1
parquet ×1
prometheus ×1
python ×1
spring-kafka ×1