我试图找到一种简单而有效的方法来使用 Scala 3 来(反)序列化枚举circe
。
考虑以下示例:
import io.circe.generic.auto._
import io.circe.syntax._
enum OrderType:
case BUY
case SELL
case class Order(id: Int, `type`: OrderType, amount: String)
val order = Order(1, OrderType.SELL, "123.4")
order.asJson
Run Code Online (Sandbox Code Playgroud)
序列化数据后,它变成
{
"id" : 1,
"type" : {
"SELL" : {
}
},
"amount" : "123.4"
}
Run Code Online (Sandbox Code Playgroud)
代替
{
"id" : 1,
"type" : "SELL",
"amount" : "123.4"
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的。
我知道我可以为此编写一个自定义(反)序列化器,它将解决这个特定实例的问题,如下所示:
implicit val encodeOrderType: Encoder[OrderType] = (a: OrderType) =>
Encoder.encodeString(a.toString)
implicit def decodeOrderType: Decoder[OrderType] = (c: HCursor) => …
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 Airflow 2.0 REST API 触发新的 dag 运行。如果我登录到远程计算机上的 Airflow Web 服务器并转到 swagger 文档页面来测试 API,则调用成功。如果我注销或者 API 调用是通过 Postman 或curl 发送的,那么我会收到 403 禁止消息。无论我是否提供 Web 服务器用户名密码,curl 或 postman 都会收到相同的 403 错误消息。
curl -X POST --user "admin:blabla" "http://10.0.0.3:7863/api/v1/dags/tutorial_taskflow_api_etl/dagRuns" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"conf\":{},\"dag_run_id\":\"string5\"}"
{
"detail": null,
"status": 403,
"title": "Forbidden",
"type": "https://airflow.apache.org/docs/2.0.0/stable-rest-api-ref.html#section/Errors/PermissionDenied"
}
Run Code Online (Sandbox Code Playgroud)
API 的安全性已更改为默认值,而不是 deny_all (auth_backend = airflow.api.auth.backend.default)。Airflow 的安装是使用 ubuntu 18 Bionic 使用 pip 完成的。如果手动或计划触发,DAG 运行良好。数据库后端是postgres。
还尝试将 cookie 详细信息从 Chrome 复制到邮递员中以解决此问题,但它不起作用。
这是上述两个调用的 Web 服务器日志。
airflowWebserver_container | 10.0.0.4 - - [05/Jan/2021:06:35:33 …
Run Code Online (Sandbox Code Playgroud) 我在我的 Hive 控制台/.hiverc
文件中使用以下属性,以便每当我查询表时,它都会更新Hive 元存储表中的LAST_ACCESS_TIME
列TBLS
。
set hive.exec.pre.hooks = org.apache.hadoop.hive.ql.hooks.UpdateInputAccessTimeHook$PreExec;
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用spark-sql
or spark-shell
,它似乎不起作用并且LAST_ACCESS_TIME
不会在 hive Metastore 中更新。
这是我阅读表格的方式:
>>> df = spark.sql("select * from db.sometable")
>>> df.show()
Run Code Online (Sandbox Code Playgroud)
我已经hive-site.xml
在/etc/hive/conf
和 中设置了上述钩子/etc/spark/conf
。